簡體   English   中英

Javascript,可以檢查HTML中是否存在函數<script> tags?

[英]Javascript, possible to check whether function exists in HTML <script> tags?

我有以下設置:一個Javascript文件(包含Ajax將放入新Div中的google可視化功能)和一個vbscript文件,其中包含Ajax調用的實現功能,該功能在標記內寫入google可視化javascript。

在javascript文件的Ajax調用中,我將Ajax調用的內容放入新的div中,並將其附加到容器div中。 然后,我調用Google javascript函數之一,這是Ajax調用添加到html的新內容。

如果我在Google javascript函數調用之前有警報或setTimeOut(),它會起作用。 如果我只是立即調用該函數,則不會。 因此,似乎無法識別新添加的Ajax的javascript代碼。

有沒有什么優雅的方法可以在沒有超時的情況下調用該函數? 我確實編寫了一個while循環來保持循環,直到找到新的附加節點為止,但仍無法識別該函數調用。

    function ProcessAjaxCall(DivID, ResponseText)
    {
        var NewDiv = document.createElement("div"); 
        NewDiv.id = "myscript";
        NewDiv.innerHTML = ResponseText;
        document.getElementById(DivID).appendChild(NewDiv);
        //alert('Function below only works when this outputs');
        MyGoogleJSFunction('Arg');
    }

因此,MyGoogleJSFunction是通過Ajax調用編寫的代碼的一部分,位於NewDiv中。

這是因為執行JavaScript(至少現在還沒有)時解析器無法重新呈現當前頁面。 您必須將控制權交還給瀏覽器,並執行其中包含的腳本。 一種方法是使用setTimeout (例如,延遲為0 ); 另一種方法是關閉並重新打開當前腳本元素,就像Google Analytics(分析)一樣:

<script type="text/javascript">
    var _gaq=_gaq||[];
    _gaq.push(['_setAccount','UA-XXXXXXX-X']);
    _gaq.push(['_trackPageview']);
    (function(){
        var ga=document.createElement('script');
        ga.type='text/javascript';
        ga.async=true;ga.src='http://www.google-analytics.com/ga.js';
        var s=document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(ga,s);
    })();
    _qoptions={qacct:"p-c1rF4kxgLUzNc"};
    /* now close this script element, so we can use functions included
     * by the GA script */
</script>
<script>
    // …
</script>

暫無
暫無

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

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