簡體   English   中英

Javascript:如何在代碼塊之間傳輸變量?

[英]Javascript: How to transfer variables between code blocks?

我正在使用 Mautic,這是一個電子郵件通訊軟件。 用戶通過包含簡單 HTML 表單的 HTML 登錄頁面輸入新聞通訊的詳細信息。

此 JS 代碼允許 Mautic 處理來自 HTML 登錄頁面的數據。 它位於我的 HTML 頁面的結束正文標記之前:

Mautic 代碼塊

<script>
    (function(w,d,t,u,n,a,m){w['MauticTrackingObject']=n;
        w[n]=w[n]||function(){(w[n].q=w[n].q||[]).push(arguments)},a=d.createElement(t),
        m=d.getElementsByTagName(t)[0];a.async=1;a.src=u;m.parentNode.insertBefore(a,m)
    })(window,document,'script','https://myurl/mtc.js','mt');
       mt('send', 'pageview', {'tags':'landing-page-name'});

</script>

最后一行'tags':'landing-page-name'告訴 Mautic 輸入的數據來自哪個着陸頁。 目前, landing-page-name必須是硬編碼的。如果landing-page-name可以動態替換為HTML 頁面的文件名,我會更喜歡它。

在我的 HTML 頁面上,我已經有一個 Javascript 塊,用於提取當前 HTML 頁面的文件名並將其插入到我的 Mautic 表單(在 HTML 登錄頁面上)的字段中。 它將 HTML 頁面的名稱分配給名為val的變量。

HTML 名稱代碼塊

<script>
    window.onload = function() {
        let val = location.pathname.split('/').pop().replace('.html', '');
        val = val.replace(/-/g, ' ');
        val = val.replace(/(^\w{1})|(\s{1}\w{1})/g, match => match.toUpperCase());
        document.getElementById('mauticform_input_genericcouponclub_book_purchased').value = val;
        document.getElementById('mauticform_genericcouponclub_book_purchased').style.display = "none";
    }
</script>  

此代碼塊直接放置在 Mautic 代碼塊上方。

如何將val變量傳遞到 Mautic 代碼塊中,以便我可以在 'tags': 部分中使用而不必對名稱進行硬編碼?

將文件名添加到全局/窗口對象。 在其他函數中訪問相同的變量。

確保在windows.load中也包裝了第二個函數(消費者),因為在此之前文件名將是未定義的。 或者,您可以有一個后備名稱。

 <script> window.onload = function() { let val = location.pathname.split('/').pop().replace('.html', ''); val = val.replace(/-/g, ' '); val = val.replace(/(^\\w{1})|(\\s{1}\\w{1})/g, match => match.toUpperCase()); document.getElementById('mauticform_input_genericcouponclub_book_purchased').value = val; document.getElementById('mauticform_genericcouponclub_book_purchased').style.display = "none"; // attach name to window/global object window.htmlFileName = val; } </script> ----------------------- <script> window.onload = function() { var fileName = window.htmlFileName || 'landing-page-name' (function(w,d,t,u,n,a,m){w['MauticTrackingObject']=n; w[n]=w[n]||function(){(w[n].q=w[n].q||[]).push(arguments)},a=d.createElement(t), m=d.getElementsByTagName(t)[0];a.async=1;a.src=u;m.parentNode.insertBefore(a,m) })(window,document,'script','https://myurl/mtc.js','mt'); mt('send', 'pageview', {'tags': fileName }); } </script>

暫無
暫無

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

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