[英]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.