使用外部脚本结果填充本地div

时间:2015-12-07 14:51:43

标签: javascript jquery angularjs

我正在网站上使用Angular和JQuery,并将页眉和页脚设置为部分,以便最大限度地重复使用。我遇到的问题是我需要在加载时在页脚内处理一些javascript,但是Angular不会通过ng-include标记或JQuery使用$.load()方法支持。

我有多个第三方脚本要运行,但我现在正在处理的是其中一个返回图像的Verisign脚本,该脚本使用<script src=""></script>模式加载。我知道至少目前Javascript没有办法引入外部脚本,所以我的想法是简单地创建一个容器div,我希望图像出现,从主页运行第三方脚本,然后到获取该内容并通过引用填充容器div,概念上看起来像这样:

//footer.html
<div id="siteVerify"></div>

//index.html
//call a method that takes 3rd party that i can point to siteVerify

是否可以将第三方脚本指向siteVerify div而不在div中运行脚本?

相反,如果有一种替代的首选方法可以重复使用html代码,这样我就可以在一个地方编辑更改并让它们在整个网站中进行推广?

编辑:

我说:

// If you know these dead scripts will be in a certain container, refine your jQuery selector
$(document).ready(function(){

// If you know these dead scripts will be in a certain container, refine your jQuery selector
    $('.deadScriptContainer script').each(function(){
        // If a script has content, we want to execute it
        if($(this).html().length > 0){
            // Eval() will execute any JavaScript it is passed
            eval($(this).html());
        }else{
            // If this script has no content, let's see if it has a src
            if($(this).src){
                // Create a new script tag
                var newScript = document.createElement("script");
                newScript.type = "text/javascript";
                newScript.src = $(this).src;
                // Append new script to the head
                document.querySelector("head").appendChild(newScript);
            }
        }
    });
});

进入js文件,并在index.html文件的底部调用它。同时在我的页脚中,我有类似的东西:

<div class='deadScriptContainer'><span id='siteseal'>
    <script type="text/javascript" src="https://seal.godaddy.com/getSeal?sealID=...."></script></span>
</div>

所以它应该在div中使用类'deadScriptContainer'找到脚本标记,然后查找它的src,它应该是https:....我在代码中放了一个警告,它确实似乎是找到脚本标记,但是当我检查src值是什么时,它总是返回'undefined'。

我有一种感觉,我的选择器可能是错的,但我看不出它们是什么。

1 个答案:

答案 0 :(得分:1)

当您使用AJAX加载脚本标记时,问题是它们会以放置的方式引入您想要的地方,因此它不会被触发。有一种简单的方法可以恢复这些死亡的剧本,所以你很幸运!

从AJAX请求中恢复数据后,请评估所有内部JavaScript。

对于外部JavaScript,您需要做的是创建一个新的<script>标记并为其提供死亡脚本的来源。

一旦您加载了新数据,整个过程应该如下所示:

// If you know these dead scripts will be in a certain container, refine your jQuery selector
$('deadScriptContainer script').each(function(){
    // If a script has content, we want to execute it
    if($(this).html().length > 0){
        // Eval() will execute any JavaScript it is passed
        eval($(this).html());
    }else{
        // If this script has no content, let's see if it has a src
        if($(this).src){
            // Create a new script tag
            var newScript = document.createElement("script");
            newScript.type = "text/javascript";
            newScript.src = $(this).src;
            // Append new script to the head
            document.querySelector("head").appendChild(newScript);
        }
    }
});