簡體   English   中英

如何將數據傳遞到異步加載的外部JavaScript腳本

[英]How to pass data to external javascript script, loaded asynchronously

我按照這個答案https://stackoverflow.com/a/7719185/842837異步加載javascript。 我如何將數據傳遞到此外部文件?

當前代碼:

<script id="js-widget-o2ba1y" type='text/javascript'>
    (function() {
        function async_load(){
            var config = {
                'module': 'hyperdesign',
                'user-name': 'John Doe',
                'user-email': 'john@doe.com'
            };
            var id = "js-widget-o2ba1y";
            var embedder = document.getElementById(id);
            var s = document.createElement('script');
            s.type = 'text/javascript';
            s.async = true;
            var u = 'http://external.javascript.file.js';
            s.src = u + ( u.indexOf("?") >= 0 ? "&" : "?") + 'ref=' + encodeURIComponent(window.location.href);
            embedder.parentNode.insertBefore(s, embedder);
        }

        if (window.attachEvent)
            window.attachEvent('onload', async_load);
        else
            window.addEventListener('load', async_load, false);
    })();
</script>

如何將config發送到外部js文件?

編輯我正在通過谷歌分析代碼。 他們還異步加載腳本,並使用來自第三方網站的配置數據:

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

我需要以更易讀的方式做同樣的事情。

不,您不能傳遞這樣的參數並使腳本讀取它們。

從技術上講,您可以從標簽中獲取它們,但這確實是一團糟。

可以在包含文件之前輸出一個腳本塊嗎?

<script type="text/javascript"> 
            var config = {
                'module': 'hyperdesign',
                'user-name': 'John Doe',
                'user-email': 'john@doe.com'
            };

 </script>
 <script id="js-widget-o2ba1y" type='text/javascript'>
     //you code
  </script>

這樣, config對象將附加到window名稱空間=> window['config'] ;

因此,作為替代,您可以保留與原來相同的代碼,但是,只需將window.config= var config=替換為var config= window.config= 這樣,外部js的config將可見。

<script id="js-widget-o2ba1y" type='text/javascript'>
    (function() {
        function async_load(){
            window.config = {
                'module': 'hyperdesign',
                'user-name': 'John Doe',
                'user-email': 'john@doe.com'
            };
            var id = "js-widget-o2ba1y";
           //-----rest of code
</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM