IE href ="javascript:customFunction()"没有在第一帧加载时触发

ten*_*les 7 javascript internet-explorer frameset

我有一个自定义日期选择器弹出窗口有时无法在IE中工作.它适用于Chrome和Edge.

代码看起来像这样:

<frameset>
    <frame>Buttons for next/prev month/year</frame>
    <frame>This is the actual calendar that gets redrawn when the above buttons are used
        <a href="javascript:parent.opener.setDate(1);">1</a> //there's a different anchor tag for each day of the month
    </frame>
<frameset>
Run Code Online (Sandbox Code Playgroud)

所以这里有点奇怪.我们有两个网络,称之为新旧.旧的可能有很多无证的全球政策变化,新的可能接近政府标准.这适用于旧网络上的任何浏览器,但不适用于新网络上的IE(11).它适用于Edge.此外,如果顶部框架按钮用于选择下一个/上个月,或仅选择"今天"按钮,则所有底部框架锚定链接都能正常工作.没有控制台错误/警告,网络监视器中没有任何内容显示请求返回错误代码,点击只是不注册.我在customFunction()中放置一个断点,当链接不起作用时它不会中断,但是如果链接可以工作,它将会中断.

唯一对我来说很奇怪的是整个弹出窗口的代码看起来像:

str = "<frameset><frame name='topFrame' " + 
    "src='javascript:parent.opener.drawTop'></frame><frame name='bottomFrame' "+
    "src='javascript:parent.opener.drawBottom'><frame</frameset>"

document.write(str);
Run Code Online (Sandbox Code Playgroud)

我确实想检查一下,当使用prev/next/etc按钮时重绘底部框架的代码与第一次加载时调用的函数相同.

然而,看起来奇怪的是,在第一次加载时,DOM检查器显示所有内容(顶部框架,底部框架包括每月每天的所有单独数字等),但调试器(F12工具)不显示用document.write(str)加载的代码; 线.为了能够看到该代码并设置断点,我必须使用prev/next按钮,然后在Debugger中显示另一个.html文件,该文件具有与DOM匹配的构造HTML.

Nut*_*ker 4

尝试这个:

1)

<a href="javascript:parent.opener.setDate(1); void(0);">1</a>
Run Code Online (Sandbox Code Playgroud)

2)

<a href="javascript:function(){parent.opener.setDate(1); return false;}">1</a>
Run Code Online (Sandbox Code Playgroud)

3)

<a href="#" onclick="javascript:parent.opener.setDate(1); return false;">1</a>
Run Code Online (Sandbox Code Playgroud)

4)检查你的代码。也许你的框架有属性“沙箱”。该属性可以阻止 javascript。例子:

 <iframe src="URL" sandbox>
Run Code Online (Sandbox Code Playgroud)