Установка атрибута данных в теге объекта не загружает ресурс

#javascript #html #safari #webkit

#javascript #HTML #safari #webkit

Вопрос:

В браузерах на основе AppleWebKit замечено, что изменение атрибута данных HTMLObjectElement (тега объекта) не приводит к отправке HTTP-запроса на URL-адрес и загрузке ресурса. Это отлично работает в FireFox и Chrome, но не в Safari и других браузерах AppleWebKit. Ниже приведен мой код. Пожалуйста, предложите решение, как я могу динамически устанавливать данные в теге объекта

    <html>
     <head>
          <script type="text/javascript">
            window.onload = function(){
              c= document.getElementById('test');
              c.setAttributeNS(null,'data','http://myserver.com/SVG/MyImage.svg');
            }
         </script>
     </head>
     <body>
          <object id="test" data="" type="image/svg xml" width="320" height="240" />
     </body>
  </html>
  

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

1. Что произойдет, если вы просто установите c.data эту строку напрямую, без использования «setAttributeNS()»?

2. setAttribute('data','<url'); работает ли?

3. Рак (или кто-либо еще), вы нашли решение этой проблемы? У нас та же проблема 8 лет спустя! Мы обнаруживаем, что теги объектов, которые динамически загружаются, аналогичные приведенным выше, не будут последовательно загружаться в Safari / iOS Chrome (что на самом деле является webkit). Chrome на Windows или iOS загрузит приведенный выше код безупречно.

Ответ №1:

атрибуты — это кошмар кроссбраузерности, смотрите здесь-> http://www.quirksmode.org/dom/w3c_core.html#attributes

jQuery реализует это через кросс-браузер -> http://api.jquery.com/attr /

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

1. Даже с jquery это не работает для Safari, но работает для Chrome и FireFox