2010-06-21 37 views
16

Tôi đang cố gắng truy cập DOM của iframe tải URL bên ngoài. Tất nhiên tôi nhận được lỗi "Quyền bị từ chối do" do bảo mật tên miền chéo. Làm thế nào tôi có thể thực hiện công việc này? Tôi thấy một cái gì đó được thực hiện với json (nhưng tôi không thể có được một chuỗi json từ nguồn bên ngoài của tôi) và một cái gì đó được thực hiện với HTML5 postmessage.Kịch bản iframe tên miền chéo jQuery

bạn có thể thấy nó sống tại địa chỉ: http://jsfiddle.net/QPBvJ/

Mã này là:

$(document).ready(function(){ 
    $('#get').live('click', function() { 

     var currentIFrame = $('#frameDemo'); 
     currentIFrame.contents().find("a").css("background-color","#BADA55"); 

     alert ("done") 
    }); 
    }); 

<iframe src="http://api.jquery.com/" width="80%" height="600" id='frameDemo'></iframe> 
<button id="get">Get</button> 

Điều gì sẽ là cách dễ nhất để làm cho công việc này. Cảm ơn bạn

+0

Bạn có thể kiểm tra bài đăng này với một liên quan đến các yêu cầu tên miền chéo: ** [Loading chéo trang html miền với jQuery AJAX] (http: //stackoverflow.com/a/17299796/2247494)** – jherax

Trả lời

27

Không có cách nào để thực hiện công việc này. Trừ khi, miền nước ngoài bạn cố truy cập hỗ trợ quy trình như C.O.R.S, JSONP hoặc postMessage.

Có một vài trường hợp ngoại lệ (như mọi khi):

Nếu bạn đang làm việc với một WebApp ví dụ, bạn có thể báo cho người dùng rằng họ phải cấp quyền truy cập để cross-domain-calls.

Trong Gecko/Firefox ví dụ, bạn có thể gọi

netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead') 

cho phép trình duyệt để truy cập vào các lĩnh vực nước ngoài qua ajax/iframes. Trong kịch bản này, người dùng phải thiết lập

signed.applets.codebase_principal_support 

để true dưới about:config để làm công việc này.

Trong Internet Explorers của thế giới này, có một cài đặt được gọi là một cái gì đó như allow cross-domain access ẩn sâu trong tab security, phải được đặt thành enable.

Chrome phép cross-domain cuộc gọi với một đối số dòng lệnh:

chrome.exe --disable-web-security 
+0

Ok, thanx cho thông tin. Tôi đang làm việc này, nó sẽ hoạt động. – Mircea

+0

Ở đây bạn có thể tìm thấy một số thông tin liên quan đến các yêu cầu tên miền chéo: ** [Tải trang html chéo miền với jQuery AJAX] (http://stackoverflow.com/a/17299796/2247494) ** – jherax

Các vấn đề liên quan