Неверный вызов или аргумент в IE 8 - PullRequest
0 голосов
/ 19 ноября 2011

Я хочу получить доступ к классу opener в дочернем окне (созданном window.open),
Браузер w3c работает нормально, но не работает в IE 8.
Я также протестировал iframe и он отлично работает во всех браузерах.Цель этого примера - уменьшить загрузку карт Google
родительское окно

 <!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<script src="http://maps.google.com/maps/api/js?sensor=false&language=cn"></script>
    <script>
        function openIEWin(){
           var TRACK = window.open('child.html?t='+new Date().getTime(),'');
           TRACK.focus()
        }
    </script>
</head>
<body style="background-color:#cfc;" class="abc">
    <button onclick="openIEWin()">New Window</button>
    <!--iframe page can successfully access and invoke the parent window's class-->
    <iframe src="b.html"></iframe>

дочернее окно:

<!DOCTYPE html>
<html>
    <head>
    </head>
    <body onload="init()">
    <div id='map' style="width:600px;height:480px;"></div>
        <script>
            function init(){
                var google= window.opener.google;
                //cause an error
                var latlng = new google.maps.LatLng(-34.397, 150.644);
                var myOptions = {
                  zoom: 8,
                  mapTypeId: google.maps.MapTypeId.ROADMAP,
                  center:latlng
                };
                //cause an error
                var map = new google.maps.Map(document.getElementById('map'),myOptions);
            }
        </script>

сообщение об ошибке настолько типично:
неверный вызов процедуры или аргумент
затем я попробовал IE window.showModelessDialog, но только что встретил ту же ошибку.
так какисправить эту проблему?
кажется, что мы не можем использовать new для создания экземпляра?

1 Ответ

0 голосов
/ 20 ноября 2011

Полагаю, это связано с тем, что IE не поддерживает передачу объектов между окнами.Если код карты Google в любой момент пытается вызвать JSON.stringify для объекта конфигурации, то я думаю, что эта ошибка будет возникать, поскольку JSON.stringify не может распознать объект как действительный объект.

Попробуйте переместитьэтот код на открывающую страницу, а затем вызовите этот метод из дочерней страницы, передав элемент для отображения в (document.getElementById('map')) в качестве аргумента.

...