2013-05-16 2 views
0

Пожалуйста, кто-нибудь мне помогает.location.hash и iframe конфликтуют с версией IE менее 10

Я сделал JS (target.js, как показано ниже), что делает iframe, как показано ниже.

Я не уверен в причине, но функция onload не работает на IE 9,8.

Когда я удалил тег скрипта, функция onload работает и окно прокручивается для привязки.

<body onload="location.hash='#hashparam';"> 

HTML 

<!-- Target part --> 
<script params="parameters" src="target.js"></script> 
<iframe src="target.html?parameters"> 
    <html> 
     <head> 
     </head> 
     <body> 
      <script src="target-inner.js"></script> 
      many iframes which are made by the script tags 
     </body> 
    </html> 

HTML 

</body> 

Кто-нибудь знает причину? Если вы знаете об этом, пожалуйста, научите меня.


// target-inner.js 
isIE = /MSIE/.test(window.navigator.userAgent); 
isIE10 = /MSIE 10/.text(window.navigator.userAgent); 
if (isIE10 || !isIE) { 
    doc.clear(); 
    doc.open; 
} 
doc.write("<html><head></head><body>"); 
doc.write(text); 
doc.write("</body></html>"); 
if (isIE10 || !isIE) { 
    return doc.close(); 
} else { 
    return; 
} 
+0

Вы можете создать jsfiddle.net, моделируя эту ошибку? – fmodos

+0

Благодарим за отзыв. Я буду искать jsfiddle.net и попытаюсь создать jsfiddle.net. – zuqqhi2

+0

Когда я удаляю внутренние фреймы, функция onload работала. Возможно, причиной является двойное iframe. – zuqqhi2

ответ

0

я нашел причину.

В IE9 iframe блокирует функцию загрузки тела. А потом в моем скрипте нет документа.close() с IE9. Функция onload заблокирована навсегда из-за этого. Но в моем скрипте, если я добавлю document.close() после document.write с IE9, IE9 будет раздавлен. Таким образом, я меняю способ реализации, я добавил основную функцию к части кузова. Это работает.

Благодарим fmodos за вашу доброту.

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