【问题标题】:How to check if frame source has changed and open source in new window如何检查框架源是否已更改并在新窗口中打开源代码
【发布时间】:2011-08-30 04:03:38
【问题描述】:

我们正在创建一个基于网络的移动应用程序。该应用程序有一个在窄框架中加载的广告。在 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> 

谢谢。

【问题讨论】:

  • 是否将&amp;lt1=_new 附加到iframe 的src 可以解决问题
  • 不确定这是否重要,但我使用的是框架,而不是 iframe。刚试过,它没有做任何事情。我希望仅在单击框架内的某些内容时创建一个新窗口。
  • o0ps!抱歉,我匆忙阅读并发表了评论...

标签: javascript jquery frame


【解决方案1】:

从您的代码看来,广告似乎位于同一个域中?如果是这种情况,最简单的方法就是将target="_blank" 注入该框架中的所有 a 标签。

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

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

【讨论】:

  • 广告实际上不在同一个域中,广告代码也是通过 javascript 生成的。出于测试目的,我在“play.php?showad”中所拥有的只是 .js 文件的 javascript 包含。 js文件里面只有一行代码:document.write("google.com>google.com</a>"); 也就是说,在“play.php?showad”本身的html里面,没有标记。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多