Любой HTML-код после iframe не выполняется с использованием document.write - PullRequest
5 голосов
/ 11 января 2011

Пока я пытался вставить iframe с помощью documnet.write в IE, я добился успеха. Но любой HTML-код после этого не выполняется.

document.write("<div>Hello</div><iframe ..../><div>Bye Bye</div>");

Здесь строка "Bye Bye" не выполняется.

Для мгновенной проверки вы можете ввести URL вашего браузера

javascript:document.write("<div>Hello</div><iframe ..../><div>Bye Bye</div>");

После проб и ошибок я обнаружил, что если я закрою тег iframe следующим образом, он будет работать.

<iframe ...></iframe> instead of <iframe  ...  />

Теперь проблема в том, что «у меня нет возможности изменить <iframe ../> на <iframe .. ></iframe>». Нужны ваши добрые советы.

Ответы [ 2 ]

2 голосов
/ 11 января 2011

Если вам разрешено изменить строку перед отправкой на document.write, тогда вы можете изменить разметку самостоятельно следующим образом:

markup = "<div>Hello</div><iframe ..../><div>Bye Bye</div>"
markup = markup.replace(/<iframe([^>]*?)\/>/g, '<iframe$1></iframe>')
document.write(markup);
1 голос
/ 11 января 2011

Если у вас нет возможности изменить как строку (т. Е. Вы не можете прочитать ее заранее), так и часть кода document.write, я предполагаю, что вы по крайней мере имеете разрешение на редактирование / вставку некоторого кода вдокумента (иначе у вас не должно быть этого вопроса, поскольку вы вообще ничего не можете сделать).

Таким образом, попробуйте закалить метод document.write(), вставив некоторый код до того, как что-то произойдет:

document.write=function(str){
    str=str.replace(/<iframe([^>]*?)\/>/ig,'<iframe$1></iframe>');
    return document.writeln(str);
}
...