Проблема с плагином JQuery с IFrame
У меня есть плагин, который регистрирует действие пользователя на любом веб-сайте.
Действия записываются в другом окне того же браузера.
Для IE он работает правильно на всех сайтах, кроме тех, которые имеют Iframe.
script блокируется на сайтах с Iframes со следующей ошибкой:
SCRIPT5: доступ запрещен.
Его собственный плагин.
Ошибка на window.open
Он не открывает новое окно правильно
Ниже приведен фрагмент плагина.
newwindow = window.open("", "ScriptGen", "menubar=0,directories=0,toolbar=no,location=no,resizable=yes,scrollbars=yes,width=450,height=250,titlebar=0");
newwindow.document.write('<title>New Console</title>');
Использование alert (window) отображает "[окно объекта] на всех сайтах.. но на сайтах, имеющих iframes, отображается только" [object] "
Пожалуйста, направляйте.
Ответы
Ответ 1
Это сработало для меня...
try{
newwindow = window.open("", "ScriptGen", "menubar=0,directories=0,toolbar=no,location=no,resizable=yes,scrollbars=yes,width=450,height=250,titlebar=0");
console.log(newwindow.document);
}
catch (error) {
console.log("Error catched");
newwindow.close();
useDomain = true;
var domain = document.domain;
newwindow = window.open("javascript:document.write('<script>document.domain=\"" + document.domain + "\"</script>')", "ScriptGen", "menubar=0,directories=0,toolbar=no,location=no,resizable=yes,scrollbars=yes,width=450,height=250,titlebar=0");
}
Спасибо всем за вашу помощь.
Ответ 2
Я не знаю, какую версию jQuery вы используете, но я думаю, вы должны обновиться до 1.11.0:
https://jsfiddle.net/j3LaC/ - попробуйте сделать это с помощью 1.10.1 (не работает) и с 1.11.0 (работает)
HTML:
<div id="body"></div>
<input id="button" type="button" value="Submit iframe"/>
JavaScript:
var iframe = $("<iframe></iframe>").appendTo("#body")[0];
var doc = iframe.document;
var content = '<form method="get"><input name="hidden" type="hidden" value="123"/></form>';
doc = iframe.contentDocument;
doc.writeln(content);
doc.close();
$('input#button').click(function () {
$('iframe').contents().find('form')[0].submit();
});
CSS
iframe {
height: 300px;
width : 100%;
}
Ответ 3
Избавьте iframes перед запуском вашего плагина
function banish() {
$('iframe').remove();
}