При вызове функции JavaScript onload неожиданно выдается «Ожидаемый объект» - PullRequest
0 голосов
/ 05 марта 2011

Работал следующий вызов функции onload:


    <script type="text/javascript">   
    function frameloaded() {  
       if (parent.leftframe) {  
          parent.leftframe.reportRightFrameReloaded();  
       }  
    }  
    </script>      
    </head>    
    <body onload="frameloaded();">  
 .... etc.

, пока я не добавил внешнюю ссылку javascript

 
    <script type="text/javascript" src="sorttable.js"></script< 

непосредственно перед ней.Затем он неожиданно начал давать мне «Ожидаемый объект» в IE (у меня IE8) и просто перестал работать в Firefox (3.6.3).Я подумал, что во включенном файле было дублированное имя функции, поэтому я дал ему случайное имя, и оно все равно не удалось.Я безуспешно пытался использовать


    onload="this.frameloaded();"   

и


    onload="document.frameloaded();"   

.
Я пытался переместить свою функцию над включенным оператором, но просто получил пустой кадр.

Есть идеи?Спасибо!

1 Ответ

2 голосов
/ 19 марта 2011

@ Хэмиш был прав. Проблема была в sorttable.js. Он использует window.onload, что противоречило моей загрузке BODY. В sorttable.js было несколько операторов window.onload в некоторой сложной логике, поэтому я не мог просто использовать рекомендованное решение в таких случаях, которое должно было бы запускать все необходимые функции onload в событии onload BODY.

Вместо этого мое решение, которое мне не совсем удобно, - поместить содержимое моего метода frameloaded () внизу BODY, но не внутри функции. Таким образом, он выполняется как можно позже во время процесса загрузки. Это работает (т.е. выполняется после загрузки таблиц, которые должны быть загружены первыми) в IE и Safari, но у меня возникают проблемы с другими браузерами.

...