2012-02-21 64 views
2

此脚本每2秒运行一次并检测iframe的url是否更改。但我无法让它工作。我想提醒iframe的url是否被更改。例如,如果有人点击链接并转到iframed内容的另一个页面。iframe url更改时的警报

var prevSrc = "http://www.bodrumlife.com"; 
function check() { 
var curSrc = $('#iframe').attr('src'); 
    if (curSrc != prevSrc) { 
    alert("hobaa"); 
    prevSrc = curSrc; 
    } 
} 

window.setInterval(check, 2000); // 2 seconds 


<iframe id="iframe" name="iframe" src="http://www.bodrumlife.com"></iframe> 
+4

http://stackoverflow.com/questions/2429045/iframe-src-change-event-detection – xandercoded 2012-02-21 04:58:55

回答

4

如果你喜欢在下面使用JQuery是下面的语法,而不是使用半-jquery和标准的javascript。

$(function(){ 
    $('#iframeId').load(function() { 
     alert("the iframe has changed."); 
    }); 
}); 

虽然我不确定onload函数是否在Sarafi中有效。它由Firfox,IE和Chrome支持。

编辑:

扩展的例子

<script type="text/javascript"> 
     $(function() { 
      var intialFrameSrc = "http://www.twiij.com"; 
      $("#iframeContentPanel").load(function() { 
       if (intialFrameSrc != $("#iframeContentPanel").attr('src')) { 
        alert("the iframe has changed."); 
       } 
      }); 

      $("#btnChangeUrl").click(function() { 
       $("#iframeContentPanel").attr("src", "http://m.smh.com.au/"); 
      }); 
     }); 

    </script> 
     <iframe id="iframeContentPanel" name="iframeContentPanel" src="http://www.twiij.com" width="500" frameborder="0" height="500" scrolling="no"></iframe> 
<input type="button" id="btnChangeUrl" value="Change Url"/> 
+1

谢谢,它的工作原理。但是,当iframe的第一个负载也会触发。如何防止它在第一次加载时发射? – user198989 2012-02-21 05:31:38

+1

如果loadedCheck为false,则在第一次加载时创建一个布尔变量false,然后将其设置为true,然后将其设置为true,并在您加载后检测警报。或者如果你有默认的URL,那么检查url是否是默认的,然后什么也不做。 – Nickz 2012-02-21 05:39:00

+0

谢谢。另外,是否有可能在iframe加载时发生事件(不是加载时)? – user198989 2012-02-22 15:23:57