2015-02-12 2 views
0

Я хочу изменить javascript страницы внутри iframe. (У меня нет проблем Междоменных)Динамически меняющийся javascript

Скажет, у меня есть два HTML файла:

index.html

<html> 
 
<head> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
 
<script> 
 
function change() { 
 
\t var text = document.getElementById("text").value; 
 
\t 
 
\t var html = $("#iframe_id").contents().find("html").html(); 
 
\t html = html.replace(/---someText---/mg, text); 
 

 
\t $("#iframe_id").contents().find("html").html(html); 
 
} 
 
</script> 
 
</head> 
 
<body> 
 
Dynamic Alert Text: <input type="text" id="text" value="" /> 
 
<input type="button" value="Change Iframe" onclick="change()" /> 
 
<br><br> 
 
<iframe src="iframe.html" id="iframe_id" width="500" height="400"></iframe> 
 
</body> 
 
</html>

и iframe.html

<html> 
 
<head> 
 
<script> 
 
function test() { 
 
\t alert("---someText---"); 
 
} 
 
</script> 
 
</head> 
 
<body> 
 
<div>Text is: ---someText---</div> 
 
<input type="button" value="Test Me!" onclick="test();" /> 
 
</body> 
 
</html>

Я хочу заменить предупреждающее сообщение iframe.html текстом, который я получаю от index.html Просто замена его не работает. Есть ли работа вокруг.

+0

Вместо того, чтобы иметь предшествующий iframe, сгенерируйте iframe с вашими данными в нем, используя ваш javascript, вместо того чтобы его редактировать, а затем поместить в DOM – Asheliahut

+0

. Мне все равно нужно его изменить, когда пользователь меняет ввод и показывает «Изменить ". – marvin

+0

Затем на кнопке изменения снова уничтожить iframe в DOM и воссоздать. Вы не можете редактировать что-либо внутри iframe, что создаст огромные проблемы безопасности. Ответ ниже использует хороший обходной путь. Это то же самое, что хранить информацию на сервере и иметь iframe pull, кроме как на стороне клиента. – Asheliahut

ответ

0

Вы можете использовать сеанс, печенье или объект окна или LocalStorage, чтобы получить и установить значение, я думаю, что это самый простой способ решить проблему

в index.html установить LocalStorage или переменную window.sessionStorage для хранения ваш текст:

var text = document.getElementById("text").value; 
      localStorage.setItem("myItem",text) 

в iframe.html получить значение этой переменной

alert(localStorage.getItem("myItem")); 

или

+0

Работает только в браузерах, поддерживающих html5 – Asheliahut

+0

Проблема с этим подходом (по крайней мере, для моего собственного случая), я действительно не знаю, что находится внутри iframe.html. Я ищу только специальные токены (--- someText ---), создаю форму в index.html для изменения пользователем. Они могут быть html, css или js. Функция js может быть такой же простой, как предупреждение, или очень сложной. – marvin

+0

Тогда, если вы не контролируете данные в iframe html, то то, что вы хотите, не может быть выполнено. – Asheliahut

Смежные вопросы