Javascript 如何检查帧源是否已更改并在新窗口中打开源代码

Javascript 如何检查帧源是否已更改并在新窗口中打开源代码,javascript,jquery,frame,Javascript,Jquery,Frame,我们正在创建一个基于web的移动应用程序。该应用程序有一个在窄框中加载的广告。在iPhone上进行测试时,我们注意到,当点击广告时,它会加载到(本机应用程序的)广告框中,而不是在新窗口中打开 我们现在通过检查帧的来源来检测是否点击了广告。如果源代码已更改,我们希望获取该URL并使用Javascript在新窗口中打开它。然后,我们希望将帧的源重置为原始 这是我们到目前为止的代码 <script type='text/javascript' src='http://ajax.googleapi

我们正在创建一个基于web的移动应用程序。该应用程序有一个在窄框中加载的广告。在iPhone上进行测试时,我们注意到,当点击广告时,它会加载到(本机应用程序的)广告框中,而不是在新窗口中打开

我们现在通过检查帧的来源来检测是否点击了广告。如果源代码已更改,我们希望获取该URL并使用Javascript在新窗口中打开它。然后,我们希望将帧的源重置为原始

这是我们到目前为止的代码

<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js'></script>

<script>
$(document).ready(function() {
    setTimeout( checkAdLocation, 250 );
});

function checkAdLocation() {
    var adLocation = window.frames['adframe'].document.location;
    if(adLocation!='http://path/play.php?showad') {
        window.frames['adframe'].document.location.href = 'play.php?showad';
        window.open( adLocation );
    }
    alert( adLocation);
    setTimeout( checkAdLocation, 2000 );
}

</script>

<frameset cols='50%,50%'>
   <frame src='play.php?showad' name=adframe>
   <frame src='http://google.com'>
</frameset> 

$(文档).ready(函数(){
setTimeout(checkAdLocation,250);
});
函数checkAdLocation(){
var adLocation=window.frames['adframe'].document.location;
如果(adLocation!='http://path/play.php?showad') {
window.frames['adframe'].document.location.href='play.php?showad';
窗口。打开(adLocation);
}
警报(adLocation);
setTimeout(checkAdLocation,2000);
}

谢谢。

根据您的代码,该广告似乎位于同一个域上?如果是这种情况,可能最简单的方法就是将
target=“\u blank”
注入该框架中的所有a标记

使用jQuery(您在示例中包括了它,所以我假设可以使用它),这应该可以做到:

    $(adframe.document.body).find('a').attr('target', '_blank');

<1=\u new
添加到iframe的
src
是否解决了问题不确定这是否重要,但我使用的是框架,而不是iframe。只是试了一下,什么也没做。我希望只在单击框架内的内容时创建一个新窗口。o0ps!抱歉,我匆忙阅读了它并发表了评论…广告实际上并不存在于同一个域中,广告代码也是通过javascript生成的。出于测试目的,我在“play.php?showad”中使用的只是一个包含到.js文件中的javascript。在js文件中,它只有一行代码:document.write(“rel=”nofollow noreferrer“>google.com>google.com”);换句话说,在“play.php?showad”本身的HTML中,没有标记。