簡體   English   中英

簡單的javascript在Safari中不起作用

[英]Simple javascript doesn't work in safari

我幾乎沒有使用javascript的經驗,並且正在嘗試使我的網站從Google驅動器文件中加載一些html代碼。 除野生動物園外,此功能在所有瀏覽器中均可正常運行。 有誰知道如何解決這個問題?

<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script> 
$(function() {
$("#leaderboard").load("https://www.googledrive.com/host/0B7VK-PTvOFWwRnVzUUlRX1BQZUU"); 
}); 
</script> 

此安全問題被稱為同一來源策略

在計算中,同源策略是Web應用程序安全模型中的重要概念。 該策略允許在源自同一站點的頁面上運行的腳本(方案,主機名和端口號1的組合 )可以訪問彼此的DOM,而沒有特別的限制,但是可以阻止訪問不同站點上的DOM。 1除非服務器提供Access-Control-Allow-Origin(CORS)標頭,否則同源策略也適用於XMLHttpRequests。 值得注意的是,WebSocket不受制於同源策略。

這種機制對現代Web應用程序具有特殊意義,因為Web服務器廣泛依賴HTTP cookie來維持經過身份驗證的用戶會話,因為服務器根據HTTP cookie信息進行操作以顯示敏感信息或執行狀態更改操作。 必須在客戶端維護不相關站點提供的內容之間的嚴格分隔,以防止丟失數據機密性或完整性。

由於此安全問題,jQuery.load函數無法從某些瀏覽器的其他域獲取內容。 同樣的事情也適用於XMLHttpRequests函數。

$('#leaderboard').load('http://google.com'); //May work and may not work!

但是您可以改用Jquery.ajax或Jquery.get函數。

$.ajax({
    url: 'http://google.com',
    type: 'GET',
    success: function(res) {
        // your code
    }
});
// Works with $.get too!

嘗試

$(function () {
    $.ajax({
        url: window.location.protocol 
             + "//www.googledrive.com/host/0B7VK-PTvOFWwRnVzUUlRX1BQZUU",
        cache: false,
        context: $("#leaderboard"),
        dataType: "html"
    })
    .then(function(data) {
      $(this).html(data)
    }, function(jqxhr, textStatus, errorThrown) {
      console.log(errorThrown)
    });
});

jsfiddle http://jsfiddle.net/qvc27vmq/

另請參閱http://browsershots.org/

暫無
暫無

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

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