如何懒惰加载内联JavaScript?

时间:2015-01-23 14:04:54

标签: javascript lazy-loading

我想仅在达到特定div时才加载横幅广告脚本。例如 - 页面底部的横幅div。

我可以使用jquery lazy脚本加载外部脚本:

var options = {
    type: "visible",
    id:"mydiv", //div Id
    scripts: [
        "1.js",
        "2.js",
        "3.js"
            ],
    success: function () {

    }
};
$.lazyscript(options);

但是如何加载内联脚本?

感谢。

2 个答案:

答案 0 :(得分:1)

整个html文档从上到下进行解析,包含脚本标记。所以从这个意义上说,你的内联javascript已经被加载了。"我可能误解了你的问题。

如果你不希望你的内联脚本在解析后立即执行,你需要在内联脚本中使用某种事件监听器。

例如,假设您的内联横幅广告代码包含在函数中

<script>
loadBannerScriptAd()
</script>

你需要写一些像

这样的东西
<script>
$(document).on("loadBannerScript", loadBannerScriptAd)
</script>

你可以通过

随时触发
$(document).trigger("loadBannerScript")

所有这一切都假设你有基于你上面给出的代码示例的jquery。查看http://api.jquery.com/trigger/以获取有关如何通过jquery触发自定义事件的详细信息。

答案 1 :(得分:0)

您可以尝试我的项目jquery-lazyload-any

HTML

<div id="you-want-lazyload">
  <!--
    <script>doSomething();</script>
  -->
</div>

JavaScript的:

$('#you-want-lazyload').lazyload(options);

或 另一个jquery-appear

HTML

<div id="you-want-to-detect">
</div>

的JavaScript

$('#you-want-to-detect').bind('appear', doSomething); // you have to unbind event if you want to trigger only once