2017-10-12 113 views
0

我在JS中創建了一個小型庫,爲我們的客戶做一些分析。Javascript和腳本加載

到目前爲止,我們包括它像</body>標籤靠近下列:

<script type="text/javascript" src="https://cdn.myapp.net/main.min.js"></script> 
 
<script type="text/javascript"> 
 
    MyLib.init("idofthecustomer"); 
 
</script>

但很顯然,這不是在某些瀏覽器上運行。我查看了其他分析庫,他們以多種不同的方式包含他們的腳本。

堆:

<script type="text/javascript"> 
 
    window.heap=window.heap||[],heap.load=function(e,t){window.heap.appid=e,window.heap.config=t=t||{};var r=t.forceSSL||"https:"===document.location.protocol,a=document.createElement("script");a.type="text/javascript",a.async=!0,a.src=(r?"https:":"http:")+"//cdn.heapanalytics.com/js/heap-"+e+".js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(a,n);for(var o=function(e){return function(){heap.push([e].concat(Array.prototype.slice.call(arguments,0)))}},p=["addEventProperties","addUserProperties","clearEventProperties","identify","removeEventProperty","setEventProperties","track","unsetEventProperty"],c=0;c<p.length;c++)heap[p[c]]=o(p[c])}; 
 
    heap.load("YOUR_APP_ID"); 
 
</script>

Google分析:

<!-- Google Analytics --> 
 
<script> 
 
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
 
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
 
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
 
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 
 

 
ga('create', 'UA-XXXXX-Y', 'auto'); 
 
ga('send', 'pageview'); 
 
</script> 
 
<!-- End Google Analytics -->

他們爲什麼做這樣的事情?你能解釋一下這個目標嗎?

另一種方式,我們如何確定我們的腳本將被加載並運行?

感謝您的回答!

+0

不清楚你的問題在這裏。你的腳本文件沒有加載?或者是你的MyLib.init(「idofthecustomer」);函數根本不運行或只是拋出錯誤?您是否在瀏覽器中檢查了其調試器控制檯,因爲它沒有正常工作? –

+0

目前還不清楚,因爲我也不清楚。 「init」方法正在調用遠程API並跟蹤一些特定的細節。它似乎在某些瀏覽器上運行不正常(統計數據在不同工具之間不匹配)。但是我們不知道哪個瀏覽器出現問題等等。真正的問題是:什麼是加載JS庫(最兼容的方式)並將其用於網站的任何頁面的最佳方式? (如GoogleAnalytics,堆等) – Xavierh95

+0

問題不在於您如何加載腳本。它不是一個cors問題,因爲您正在使用

1

許多統計數據加載使用JavaScript,而不是用 「經典<script>應答器」 爲diffrents原因:

  • 如果腳本已被聲明爲i,則不要加載2次相同的庫ñ
  • 允許開發異步庫加載
  • 這是更加人性化的菜鳥,複製一個只有一個不可讀的腳本

如果你的庫沒有加載在所有瀏覽器所有的時間,它可能不是整合錯誤。

  • 互聯網用戶的最低21%的人使用統計Adsblockers
  • JavaScript是不是總是被允許(通常機器人,機器人很多)
  • 薩姆瀏覽器不允許跨域(充電JS庫或者如果你的main.min.js發送跨域請求)
  • IE也很難跨站腳本過濾(XSS保護)

如果有人看到anothers的原因,你可以編輯我的答案;)