JQuery междоменный сценарий iframe
Я пытаюсь получить доступ к DOM iframe, который загружает внешний URL. Конечно, я получаю сообщение об ошибке "Отказано в доступе" из-за междоменной безопасности. Как я могу сделать эту работу? Я видел что-то сделанное с помощью json (но я не могу получить строку json из моего внешнего источника), а что-то сделанное с помощью пост-сообщения HTML5.
Вы можете увидеть это в прямом эфире по адресу: http://jsfiddle.net/QPBvJ/
Код является:
$(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>
Какой бы самый простой способ сделать эту работу. Спасибо
1 ответ
Нет способа сделать эту работу. Если внешний домен, к которому вы пытаетесь получить доступ, не поддерживает такую процедуру, как CORS, JSONP или postMessage.
Есть несколько исключений (как всегда):
Если вы, например, имеете дело с WebApp, вы можете сказать своим пользователям, что им нужно предоставить доступ к cross-domain-calls
,
Например, в Gecko/Firefox вы можете вызвать
netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead')
который позволяет браузеру получать доступ к чужим доменам через ajax/iframes
, В этом случае пользователь должен установить
signed.applets.codebase_principal_support
в true
под about:config
чтобы сделать эту работу.
в Internet Explorers
этого мира, есть настройка, которая называется что-то вроде allow cross-domain access
глубоко спрятан в security
вкладка, которая должна быть установлена в enable
,
Chrome
разрешает междоменные вызовы с аргументом командной строки:
chrome.exe --disable-web-security