JavaScript работает в Safari 3, но не в более новых версиях

#javascript #safari

#javascript #safari

Вопрос:

Следующий JavaScript отлично работает в более старых версиях Safari (Safari 3), но не в последней версии Safari.

Можете ли вы помочь мне найти проблему?

 function loadframe(){
  var iframeEl = document.getElementById("ifrm");
  if(!iframeEl)
  {
    window.alert('hellooooooo');
    var el = document.createElement("div");
    el.innerHTML = '<iframe id="ifrm" width="0" height="0" src='<!--EP CLASS="com.epiphany.presentation.ServerURLWriter" ACTION="campaign_segment_load" TEMPLATE="campaign\campaign_segments" -->' onload="dw_display('ifrm','segmentspn')" ></iframe>';
    document.body.appendChild(el);
    return true;
  }
  return false;
}
  

Комментарии:

1. Я думаю, вам придется предоставить некоторое объяснение того, что должна делать эта причудливая разметка. В общем, простой вопрос о том, почему что-то «не работает», не сообщая, что происходит в сравнении с тем, что должно произойти, вряд ли даст большой ответ.

2. Вместо if(!iframE1) лучше использовать if (iframE1 != null amp;amp; iframE1 != undefined). И, пожалуйста, дайте больше объяснений о скрипте и проблеме.

3. Вместо последней версии лучше указать точный номер версии.

4. Определите «не работает» получаете ли вы какие-либо ошибки в консоли JS (я предполагаю, что в Safari есть такая вещь).

5. Вы должны подробно описать, что вы хотите, чтобы код делал, и что он на самом деле делает. Никто не собирается устанавливать несколько версий Safari и пытаться найти ошибки в вашем коде.

Ответ №1:

     function loadframe()
    {
       var iframeEl = document.getElementById("ifrm");
       if(!iframeEl)
       {
         var el = document.createElement('div');
         var e2 = document.createElement('iframe');
         e2.src ="http://google.com";
         e2.setAttribute('id',ifrm);
         e2.width= 80;      
         e2.height= 80;             
         document.body.appendChild(el);
         el.appendChild(e2);
         return true;
      }
      return false;
  }
  

Это будет работать во всех браузерах, поскольку iframe — это еще один элемент, мы должны добавить его с помощью метода DOM.