console.log(this.contentWindow.location)在JQuery脚本中不起作用



我正试图通过模式弹出来实现一些功能。

我在我的网站的页面a中有一个模态弹出窗口,它将在模态弹出窗口上打开页面B,在同一模态弹出窗口中,页面B将执行一个任务,然后重定向到页面C,该页面将包含在相同的模式弹出窗口中。在这里,我想在页面B处于活动状态时禁用模式弹出窗口中的"关闭按钮",并在页面C重定向时启用它。

下面是我使用的Jquery代码,当我运行代码时,pageB加载,按钮隐藏,然后当pageC加载,但按钮不会显示。

注意:我的页面使用母版页,并且我在母版页中有Scriptmanager

请谁能在这个代码中找到错误。

<script src="Scripts/jquery-3.4.1.min.js"></script>   
<script src="Scripts/MicrosoftAjax.js"></script>
<script type="text/javascript">
function displayFrame()
{
$("#<%=Irm1.ClientID%>").attr("src", "pageB.aspx");
$("[id*='Button2']").hide();
$("#<%=Irm1.ClientID%>").on("load", function () {
console.log(this.contentWindow.location);
if (this.contentWindow.location.pathname == "/pageC.aspx") {
$("[id*='Button2']").show();
}
});
}
</script>
<asp:Button ID="btpageA" runat="server" OnClientClick="displayFrame()" Text="show page B" Width="99px" BackColor="#6699FF" Font-Bold="True" ForeColor="White" Height="38px" />
<cc1:ModalPopupExtender ID="mp1" runat="server" PopupControlID="Panl1" TargetControlID="btpageA"  
CancelControlID="Button2" BackgroundCssClass="Background">  
</cc1:ModalPopupExtender>  
<asp:Panel ID="Panl1" runat="server" CssClass="Popup" align="center" style = "display:none">  
<iframe style=" width: 370px; height: 300px;" id="Irm1" runat="server"></iframe>  
<br/>  
<asp:Button ID="Button2" runat="server" Text="Close" />  
</asp:Panel>

在更改src:之前放置onload事件

function displayFrame() {
$("#<%=Irm1.ClientID%>").on("load", function () {
console.log(this.contentWindow.location);
if (this.contentWindow.location.pathname == "/pageC.aspx") {
$("[id*='Button2']").show();
}
});
$("#<%=Irm1.ClientID%>").attr("src", "pageB.aspx");
$("[id*='Button2']").hide();
}

如果它仍然不起作用,请检查javascript控制台中是否存在任何错误。如果iframe内容来自另一个域,则web浏览器不允许您访问其属性。

最新更新