簡體   English   中英

在ajax中運行javascript外部鏈接甚至內部

[英]run javascript external link and even internal in ajax

在ajaxed頁面中執行javascrpit代碼有幾種方法? 內部和外部...我真的需要執行我的腳本,但是找不到實現我的目標的方法,我在循環和getscript方法等中嘗試了eval ...但是沒有結果可以執行我的腳本嗎? 我正在使用加載功能加載頁面,請幫助我
我有谷歌地圖它以通常的方式工作,但當我使用Ajax加載它時,它將無法正常工作這是我的代碼

$('ul li a').on("click",function() {
    var link = $(this).attr("href") + " #contentx";
    $('#contentx').fadeOut('slow', function(){
        $('#contentx').load(link, function(){     
            $("#mapjs").each(function(i) {
                eval($(this).text());
            });
            $('#contentx').fadeIn('slow');
        });
    });
    return false;
});

我在一個循環中嘗試了eval這確實應該工作,您可以發布使用的代碼嗎?

您可以使用eval()函數從其他來源運行javascript。

即:

eval("alert(\"hello world\")");

將向世界顯示消息。

您需要將JS塊( <script id="mapjs">...</script> )移到其自己的專用文件中。

如果您將$.load與登錄頁面片段(即URL后接#id)一起使用,則所有腳本標簽都將被刪除,並且不會執行。 請參閱$ .load文檔的“腳本執行”部分。

偽代碼-“正確”的方式如下所示:

$('ul li a').on("click",function() {
    var link = $(this).attr("href") + " #contentx";
    $('#contentx').fadeOut('slow', function(){
        $('#contentx').load(link, function(){
            if($(this).attr('href') == 'http://wearesevil.com/?page_id=16'){     
                $.getScript('/map.js', function(){
                    $("#mapjs").each(function(i) {
                        eval($(this).text());
                    });
                });
            }
            $('#contentx').fadeIn('slow');
        });
    });
    return false;
});

“駭客”的方式? 您可以將<script id="mapjs">更改為<div id="mapjs" style="display:none;">...</div> 這樣就不會從DOM中刪除它,並且您可以在文本上使用eval()

我想說您的問題是由相同的原產地政策引起的

它甚至在$ .load的文檔中提到

您可以簡單地在Firefox或Chrome瀏覽器中檢查調試控制台以獲取相關的錯誤消息。

例如,在Firefox中,將報告如下內容:

跨域請求被阻止:同源策略禁止在https://maps.google.com上讀取遠程資源。 (原因:CORS標頭“ Access-Control-Allow-Origin”缺失)。

暫無
暫無

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

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