【问题标题】:How to run a Javascript function on an iframe before the source (src) is loaded?如何在加载源(src)之前在 iframe 上运行 Javascript 函数?
【发布时间】:2015-12-19 23:56:09
【问题描述】:

我在这个问题之前问过this 问题,试图弄清楚为什么我在a-ads iframes、this 网站上看到滚动条,而有些人发誓他们没有看到它们! 因此,我发现 iFrame 滚动条的外观是按执行顺序排列的。对于更快或更慢的计算机,结果可能会有所不同。

我意识到我必须用 JavaScript 或 CSS 替代品替换 scrolling="no",这是一个强大的(但在 HTML5 中不受支持)属性,它强制 iframe 上没有滚动条。但是,CSS overflow:hidden; 太弱了,无法覆盖 iframe 源可能包含的任何样式(例如 overflow:scrolloverflow:auto 等)。所以解决方案必须是 JavaScript。

但需要注意的是,javascript 必须在加载 iframe 本身之后激活,但在加载源 (src="") 之前之前。因为如果scrolling="no" 被替换源加载后它对 iframe 显示的结果没有影响。但是,如果它位于 之前 到达 <iframe> 标记标记,JavaScript 怎么知道要修改什么?在那个时候它就像不存在一样好。

还有一个问题:无法从<iframe> 标记中剥离源代码,并在JavaScript 中进行替换。我们已经尝试过了,虽然它起作用了......有点......我们失去了广告印象和点击进入黑洞,因为a-ads 的蜘蛛(即机器人)不能,或者有问题,检测网页上正确的广告代码。但是,如果我们将它留在 iframe 中并在设置 scrolling="no" 后重新加载源代码,则会导致双重广告加载(即无效展示)。

这是一个真正的泡菜!

世界上所有的爱因斯坦 - 你需要!

另外,this S.O.问题不适用。

截图

Chrome Proof

IE Proof

Opera Proof

Firefox was best-behaved

【问题讨论】:

  • 你有能力在 iframe 中添加 css/js 吗? iframe src 是否来自同一个域?
  • 嗨,@Jackson,不是来自 a-ads.com 的场外广告服务器。谢谢提问! :-)
  • 这个 iframe 是脚本创建的吗?如果不是,为什么不能修改html源?如果它是脚本创建的,则需要间隔计时器来检测它的存在
  • 嗨@charlietfl,our domain 上的任何脚本或标记都可以被操纵或修改,除了符合上述条件。但是,iframe(即子框架)的src 的页面/标记/脚本超出了我们的控制范围。感谢您的提问;-)

标签: javascript jquery css html iframe


【解决方案1】:

这个问题现在已经解决了,我想。这是解决方案:

<head>

    <script type="text/javascript">

    function noScrollBarsOnAAdUnit( ElementID )
    {   

        document.getElementById( ElementID ).setAttribute("scrolling", "no");       
        return true;

    };

    </script>

</head>

<body>

    <script type="text/javascript">noScrollBarsOnAAdUnit( 'aa-unit-top-center' );</script>
    <iframe id='aa-unit-top-center' style='width:468px;height:60px;' class='a-ads-frame' data-aa='[ad-id]' src='https://ad.a-ads.com/[ad-id]?size=468x60'>
        <!-- iframe fallback message here -->
    </iframe>
    <script type="text/javascript">noScrollBarsOnAAdUnit( 'aa-unit-top-center' );</script>

</body>

S.O.会员,请检查this 页面,以确保此修复是一致的,并且至少在 99.99%(如果不是 100%)的情况下确实有效。

谢谢!

-詹姆斯 A.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多