Javascript 有条件地加载和执行外部js文件

Javascript 有条件地加载和执行外部js文件,javascript,google-ads-api,Javascript,Google Ads Api,我只想在满足条件的情况下加载并执行外部javascript文件(GoogleAdwords的转换脚本)。已经有人问过类似的问题,我尝试过他们的解决方案,但都没用。我有以下代码: <script> $(function() { if ([condition]) { $.getScript('//www.googleadservices.com/pagead/conversion.js');

我只想在满足条件的情况下加载并执行外部javascript文件(GoogleAdwords的转换脚本)。已经有人问过类似的问题,我尝试过他们的解决方案,但都没用。我有以下代码:

<script> 
        $(function() { 
            if ([condition]) { 
                $.getScript('//www.googleadservices.com/pagead/conversion.js'); 
            } 
        }); 
</script> 
但效果不太好

谢谢

@弗拉斯:哦,粘贴了错误的东西,更正了吗

@ejay_francisco:我已经尝试创建脚本标签并将其附加到头部,但没有成功

@Barar:我的意思是页面下载脚本文件但不执行它。是,如果您需要完整的代码:

<!-- Google Code for Formulaire Contact Conversion Page --> 
        <script type="text/javascript">
            /* <![CDATA[ */
            var google_conversion_id = [...];
            var google_conversion_language = "en";
            var google_conversion_format = "3";
            var google_conversion_color = "ffffff";
            var google_conversion_label = "[...]"; 
            var google_remarketing_only = false;
            /* ]]> */
        </script>
        <!-- <script type="text/javascript"  src="//www.googleadservices.com/pagead/conversion.js"></script> -->
        <script type="text/javascript"  src="//code.jquery.com/jquery.min.js"></script>
        <script>
        $(function() {
            if ([condition]) {
                $.getScript('//www.googleadservices.com/pagead/conversion.js');
                $("#google_conversion").attr('src','//www.googleadservices.com/pagead/conversion/[...]/?label=[...];guid=ON&amp;script=0');
            }
        });
        </script>
        <div style="display:inline;">
            <img id="google_conversion" height="1" width="1" style="border-style:none;" alt=""  src="#"/>
        </div>

/*  */
$(函数(){
如果([条件]){
$.getScript('//www.googleadservices.com/pagead/conversion.js');
$(“#google_conversion”).attr('src','//www.googleadservices.com/pagead/conversion/[…]/?label=[…];guid=ON&;script=0');
}
});
试试这个:

<script type="text/javascript">
  $(document).ready(function(){ 
   if ([condition]) { 
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://www.googleadservices.com/pagead/conversion.js"; 
document.getElementsByTagName("head")[0].appendChild(script);
   } 
  }); 
</script>

$(文档).ready(函数(){
如果([条件]{
var script=document.createElement(“脚本”);
script.type=“text/javascript”;
script.src=”http://www.googleadservices.com/pagead/conversion.js"; 
document.getElementsByTagName(“head”)[0].appendChild(脚本);
} 
}); 
试试这个:

$(function() {
    if ([condition]) {
        $.getScript('//www.googleadservices.com/pagead/conversion.js', function() {
            $("#google_conversion").attr('src','//www.googleadservices.com/pagead/conversion/[...]/?label=[...];guid=ON&amp;script=0');
        });
    }
});

在加载
conversion.js
脚本之前,不会设置
#google_conversion
src
。如果存在依赖关系,则需要按照正确的顺序进行操作。您首先这样做是因为
$。getScript
是异步的。

从长远来看,您最好使用我认为是专门为处理这类事情而构建的。这种方法避免了任何编码错误,并且更易于阅读和维护

因此,基于这一点,我认为您会想要(尽管我不是jQuery专家-我更喜欢使用,但它们各有各的):


$(函数(){
如果([条件]){
window.google\u trackConversion({
google_转换_id:“[…]”,
谷歌语言:“en”,
谷歌转换格式:“3”,
google_转换_颜色:“ffffff”,
谷歌转换标签:“[…]”,
google_转换值:0,
仅谷歌重新营销:错误
});
}
});

如何在不执行的情况下加载它?加载就是这么做的。为什么要在regScript上设置src属性并附加脚本变量?链接可能会有所帮助you@VLAS那不是真的。省略http:意味着它将复制当前页面的协议。它将使用
http:
https:
,具体取决于当前页面的URL。在评论中回复评论。当你回答这样的问题时,不会通知评论者。你认为有什么改变会产生影响?嗯,事实上,网络日志中的呼叫并不是来自图像标签中的链接。实际上,我认为脚本已经执行,问题出在其他地方,因为出现了错误消息“未能对“文档”执行“写入”:除非显式打开,否则无法从异步加载的外部脚本写入文档。”。你还有什么想法吗?对不起,没有。我不知道为什么
conversion.js
会尝试使用
document.write()
。这通常用于完全替换文档的广告脚本,而不是仅修改页面行为的脚本。忘记回答了,这很有效,谢谢!我不明白谷歌为什么不提出这个版本的脚本,它在很多情况下都非常有用,而且还奏效了。他们确实发布了这个版本!这是在链接死了的情况下:(…但是转换\u async.js仍然有效!)
$(function() {
    if ([condition]) {
        $.getScript('//www.googleadservices.com/pagead/conversion.js', function() {
            $("#google_conversion").attr('src','//www.googleadservices.com/pagead/conversion/[...]/?label=[...];guid=ON&amp;script=0');
        });
    }
});
<head>
  <!-- Add the async conversion script as usual - use async if you want --->
  <script type="text/javascript" src="http://www.googleadservices.com/pagead/conversion_async.js" charset="utf-8"></script>
</head>

<!-- the rest of your site HTML and code -->

<script>
$(function() {
  if ([condition]) {
    window.google_trackConversion({
      google_conversion_id: "[...]",
      google_conversion_language: "en",
      google_conversion_format: "3",
      google_conversion_color: "ffffff",
      google_conversion_label: "[...]",
      google_conversion_value: 0,
      google_remarketing_only: false
    });
  }
});
</script>