【问题标题】:How to determine if the location of the iframe has changed?如何确定 iframe 的位置是否发生了变化?
【发布时间】:2011-01-15 05:06:17
【问题描述】:

我有一个 iframe,它显示来自外部站点的表单,一旦提交表单,它就会被重定向到另一个收到感谢消息的页面。如果 src 网页的位置有,是否可以从 iframe 知道改变了吗?我希望我有一些意义......

我得到了这个代码,它可以从某个网站为我完成这项工作,它在我在他们的网站上工作时,但是当我尝试在本地执行时,我得到 Access Denied javascript 错误....

<html>
<body>
<script language="JavaScript">
    function myLocation() {
        alert(document.all.myFrame.contentWindow.location);
    }
</script>
<iframe id="myFrame" src="http://www.java2s.com" style="width:200;">
</iframe>
<br>
<button onclick="myLocation();">Location of Frame</button>
</body>
</html>

谢谢

【问题讨论】:

    标签: javascript iframe


    【解决方案1】:

    您可能想要使用onLoad 事件,如下例所示:

    <iframe src="http://www.google.com/" onLoad="alert('Test');"></iframe>
    

    只要 iframe 中的位置发生变化,就会弹出警报。这种技术的唯一问题是它可能不适用于某些较旧的浏览器,例如 IE5 和早期的 Opera。 (Source)

    更新:

    进一步编辑,您会收到“拒绝访问”错误,因为您无法访问不在父窗口同一​​域内的网站的 contentWindow.location。虽然这对于您的真正要求是不幸的,但这被认为是防止cross-site scripting 的安全限制。

    【讨论】:

    • 是的,谢谢伙计,我只是在为你的 cmets 进行了一些谷歌搜索之后才发现... .it 不一定是 url,我只是想看看 iframe 中是否有任何变化...
    • @manraj82:是否可以使用上述的 onLoad 方法?每当 iFrame 中发生任何变化时,它都会触发,并且甚至可以处理跨域内容,因为它不会在 iframe 中显示有关网站的任何内容。
    • 非常感谢,onLoad 方法有效....我通过在隐藏字段中存储一个计数器值使其工作,然后根据隐藏字段中的计数器值启用按钮。 ..
    • 代码看起来不错。请记住,每当重新加载 iframe 主体时,onLoad 事件都会触发,例如,如果用户在 iframe 中右键单击并选择“This Frame->Reload Frame”(在 Firefox 中),它将再次触发。这可能会或可能不会接受,具体取决于此类问题的严重程度。此外,该事件可能不会在 IE5 时代的旧浏览器中触发。
    【解决方案2】:
    function chkCounter(counterValue) {
           var tmp=document.getElementById('txtCounter').value;
           document.getElementById('txtCounter').value=tmp+counterValue;
    
           if(document.getElementById('txtCounter').value>1)
           {
            document.getElementById("btnClose").disabled = false;
           }
        }
    
    <input align="middle" type="button" onClick="self.close();" value="CLOSE" disabled="true" id="btnClose">
    <input type="hidden" id="txtCounter">
    

    【讨论】:

      猜你喜欢
      • 2018-09-11
      • 1970-01-01
      • 2021-05-01
      • 1970-01-01
      • 2014-07-06
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多