javascript - 自 Firefox 62 以来的空 IFrame
问题描述
自 Firefox 62 发布以来,我的 iframe 有一个奇怪的错误。
我正在使用 Iframe 在我的 Webforms 应用程序中向用户显示错误消息或信息,但现在每个 Iframe 都是空的。iframe 显示,但没有内容。
这就是我构建它们的方式:
Public Sub ShowHint_JS(ByVal pv_strMessage As String, ByVal pv_strEvent As String)
Dim objMessage As New CMessage
Dim objUtilities As New CCommonFunctions(Request.ServerVariables("SCRIPT_NAME"))
AddJavaScript("$('form').append('" & objMessage.buildMessage(objUtilities.GetStruktur() & "common/Message.aspx", pv_strMessage, 0, 0, 0, 0, pv_strEvent, "") & "');", "HW_JS")
End Sub
Public Sub AddJavaScript(ByVal pv_strJavaScript As String, ByVal pv_strBlockName As String)
ScriptManager.RegisterStartupScript(Me.Page, GetType(String), pv_strBlockName, "$(document).ready(function(){" & pv_strJavaScript & "});", True)
End Sub
// 在我的 CMessage 类中:
public string buildMessage(string pv_strMessage, string pv_strEvent)
{
Session["MESSAGEEVENT"] = pv_strEvent;
return convertHtmlControlToString(buildMessageIFrame("common/Message.aspx", 80, 200, 400, 260, pv_strMessage));
}
private HtmlGenericControl buildMessageIFrame(string pv_strURL, int pv_intTop, int pv_intLeft, int pv_intWidth,
int pv_intHeight, string pv_strMessage)
{
HtmlGenericControl objIframe = new HtmlGenericControl("iframe");
if (!pv_strURL.Contains("?"))
{
pv_strURL += "?";
}
else
{
if(!pv_strURL.EndsWith("&"))
{
pv_strURL += "&";
}
}
Session["DIVCount"] = (m_objObjHandl.NZ_Int(Session["DIVCount"], 0) + 1);
Session["Message_ifrm" + m_objObjHandl.NZ_Str(Session["DIVCount"], "")] = pv_strMessage;
objIframe.ID = "ifrm" + Session["DIVCount"].ToString();
objIframe.Attributes.Add("class", "iFrameHint invisible");
objIframe.Attributes.Add("frameborder", "0");
objIframe.Attributes.Add("scrolling", "no");
objIframe.Attributes.Add("src", pv_strURL + "height=" + pv_intHeight.ToString() + "&iframe=" + objIframe.ID.ToString());
objIframe.Attributes.CssStyle.Add("top", pv_intTop.ToString() + "px");
objIframe.Attributes.CssStyle.Add("left", pv_intLeft.ToString() + "px");
objIframe.Attributes.CssStyle.Add("width", pv_intWidth.ToString() + "px");
objIframe.Attributes.CssStyle.Add("height", pv_intHeight.ToString() + "px");
return objIframe;
}
这是我的 Message.aspx,它应该显示在 iFrame 中
<%@ Page Language="VB" MasterPageFile="~/common/MasterMessage.master" %>
<asp:Content ID="cntHead" runat="server" ContentPlaceHolderID="cphHead">
<script type="text/javascript">
function buildWindow(pv_strUrl) {
var arrUrl = pv_strUrl.split('#');
if (arrUrl.length = 1) {
createWindow(arrUrl[0]);
}
if (arrUrl.length = 2) {
createWindow(arrUrl[0], arrUrl[1]);
}
if (arrUrl.length = 3) {
createWindow(arrUrl[0], arrUrl[1], arrUrl[2]);
}
if (arrUrl.length > 3) {
createWindow(arrUrl[0], arrUrl[1], arrUrl[2], arrUrl[3]);
}
}
function redirectParent(pv_strAddress) {
var objParent = parent.document;
objParent.location.href = pv_strAddress;
}
</script>
</asp:Content>
<asp:Content ID="cntMessage" runat="server" ContentPlaceHolderID="cphBody">
<table class="tblMessage">
<tr class="tdHintHeader">
<td style="width: 97%;">
Message</td>
<td id="tdClose">
<img alt="Close" src="../img/cross.gif" class="FunctionImg" /></td>
</tr>
<tr class="OuterTable">
<td colspan="2" style="padding: 10px; background-color: #D0E0FF;" class="hint top center">
<div id="divContent" class="divMessageContent"><span>
<%Response.Write.NZ_Str(Session("MESSAGE_" & NZ_Str(Request.QueryString("iframe")))).Replace(vbCrLf, "<br />").Replace(vbNewLine, "<br />").Replace(vbCr, "<br />"))%>
</span>
</div>
</td>
</tr>
<tr class="OuterTable">
<td class="center" colspan="2" style="height: 30px;">
<input type="button" value="OK" class="button" style="width: 100px;" onclick="<%= HttpUtility.HtmlDecode(Request.QueryString("event")) %>;closeMe();" /></td>
</tr>
</table>
</asp:Content>
解决方案:
用我的内容从我的 CSS-Class 更改了 div 的属性
溢出:自动;
至
溢出:可见;
解决方案
这可能是由于缺少Content-Security-Policy引起的。
为避免这种情况,请尝试将以下内容添加到您的web.config文件中:
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<httpProtocol>
<customHeaders>
<add name="Content-Security-Policy" value="frame-ancestors 'self';"/>
</customHeaders>
</httpProtocol>
</system.webServer>
希望你会发现这很有用。
推荐阅读
- javascript - javascript将画布效果插入数组?
- javascript - onClick="return abc()" 和 onClick="abc()" 的区别
- yaml - YAML 标准有什么用?我只是谷歌,但我找不到答案
- javascript - iMacros 向下滚动 Instagram 上的“关注者”弹出窗口
- python - 更新存储在 json dict 中的多个值的 Pythonic 方法
- python - 如何从给定的起点和终点返回列表
- flutter - 增加 Flutter 中自定义缓存管理器的 validTill 时间
- elasticsearch - 关键词查询
- firebase - 状态不佳:无法在不存在 FirebaseFirestore 的 DocumentSnapshotPlatform 上获取字段
- apt - Aptly 命令无法打开数据库