#javascript #google-chrome
#javascript #google-chrome
Вопрос:
parent.html
<html>
<head>
<script type="text/javascript">
function openWin()
{
myWindow=window.open('child.html','','width=200,height=100');
}
function callback(){
alert("test");
}
</script>
</head>
<body>
<input type="button" value="Open 'myWindow'" onclick="openWin()" />
</body>
</html>
child.html
<html>
<head>
<script type="text/javascript">
window.opener.callback();
</script>
</head>
<body>
</body>
</html>
И проблема в том, что дочерняя страница вызывает функцию обратного вызова родительской страницы в FF, IE, но не в Chrome.
Есть идеи?
Комментарии:
1. У меня работает. Вы получаете какую-либо ошибку в консоли?
2. Вы пробовали на дочерней странице поместить: <body onload=»javascript:window.opener.callback();»???
3. @Vismari Не помещает
javascript:
scheme в атрибуты события. Просто вставьте свой код.javascript:
Фрагмент интерпретируется как метка, это ненужно и сбивает с толку.
Ответ №1:
Проблема возникает из-за ошибки безопасности Chrome. Домены, протоколы и порты должны совпадать. Но это также происходит, когда страница открыта из локальной файловой системы.
Откройте свою страницу с сервера, это должно быть без каких-либо проблем.
Ответ №2:
Проблема может заключаться в том, как chrome запускает javascript. Chrome иногда запускает js слишком быстро и рано, и даже DOM не готов к манипуляциям. Попробуйте это в вашем child.html
<script type="text/javascript">
setTimeout(function(){window.opener.callback();}, 100);
</script>
Я не уверен, что это именно та проблема, с которой вы столкнулись, я столкнулся с этой проблемой с jQuery.ready () в chrome.
Комментарии:
1. …ммм, я думаю, что DOM открывателя, безусловно, уже загружен.