2014-06-27 134 views
2

只有滿足條件,我纔想加載並執行外部JavaScript文件(Google Adwords的轉換腳本)。類似的問題已經被問到,我已經嘗試過他們的解決方案,但它不起作用。我有以下代碼:有條件地加載和執行外部js文件

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

腳本已加載但未執行。我該怎麼做才能執行它?

我試着

var script = document.createElement("script"); 
script.setAttribute("src", "//www.googleadservices.com/pagead/conversion.js"); 
document.getElementsByTagName("head")[0].appendChild(script); 

改變getScript加入(),但它並沒有正常工作。

謝謝!

@VLAS:哎呀粘貼錯誤的事情,糾正

@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> 
+0

怎樣纔可以裝沒有被執行?這就是加載的功能。 – Barmar

+0

爲什麼在_regScript_上設置src屬性並追加_script_變量? –

+0

[this](http://stackoverflow.com/questions/24446439/how-to-remove-loaded-script-and-add-new-script/24446625#24446625)鏈接可能會對你有所幫助 – Yaje

回答

2

從長遠來看,您最好使用proper asynchronous version of the adwords conversion script我認爲它是專門爲處理這些事情而構建的。這樣可以避免任何編碼錯誤,並且更易於閱讀和維護。

所以,在此基礎上這裏就是我想你會想(雖然我沒有jQuery的專家 - 我更喜歡使用standard javascript但嘿每到自己):

<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> 
+0

忘了回答,這工作謝謝你!我不明白爲什麼谷歌不提出這個版本的腳本,它在很多情況下非常有用 – user3782513

+0

很高興它的工作。他們確實分發這個版本!它位於https://developers.google.com/adwords-remarketing-tag/asynchronous/ – matt1

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> 
+0

您認爲改變了什麼? – Barmar

0

試試這個:

$(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'); 
     }); 
    } 
}); 

這不設置的#google_conversionsrc直到conversion.js腳本後被加載。如果存在依賴關係,則需要按照正確的順序進行操作。您首先執行此操作,因爲$.getScript是異步的。

+0

Mmh實際上沒有看到網絡日誌中的呼叫來自圖像標記中的鏈接。實際上,我認爲腳本被執行了,問題在別的地方,因爲在'Document'上有'寫'失敗的錯誤信息:從異步加載的外部腳本寫入文檔是不可能的,除非它是明確打開「。你有更多的想法嗎? – user3782513

+0

對不起,沒有。我不確定爲什麼'conversion.js'會嘗試使用'document.write()'。這通常由完全替換文檔的廣告腳本使用,而不是僅修改頁面行爲的腳本。 – Barmar