Почему атрибут loadload элемента ссылки ненадежный для браузеров Android?

var style1 = document.createElement("link"); style1.id = "rel"; style1.rel = "stylesheet"; style1.href = "http://www.mysite.com/css.css"; style1.onload = function(){document.body.innerHTML+="fffffff";}; document.getElementsByTagName("head")[0].appendChild(style1); 

Этот код работает в Chrome / Firefox, и в то же время браузеры на моих устройствах Froyo (2.3) и Jellybean (4.1) Android ничего не печатают. В чем проблема? Я бы хотел, если бы я мог выполнить js onload ссылки. Все остальное в моем случае будет означать взломать. : /

Проблема не в innerHTML. Попробуйте с помощью предупреждений, если хотите (на свой страх и риск).

В другом ответе упоминается проверка этой функции путем выполнения

 var huh = 'onload' in document.createElement('link'); 

.. но это верно в обоих браузерах! Wtf ребята?

Android-браузер не поддерживает события «onload» / «onreadystatechange» для элемента: http://pieisgood.org/test/script-link-events/
Но он возвращает:

 "onload" in link === true 

Итак, мое решение – обнаружить Android-браузер от userAgent, а затем подождать некоторое специальное правило css в вашей таблице стилей (например, сбросить для полей «тело»).
Если это не браузер для Android, и он поддерживает событие «onload» – мы будем использовать его:

 var userAgent = navigator.userAgent, iChromeBrowser = /CriOS|Chrome/.test(userAgent), isAndroidBrowser = /Mozilla\/5.0/.test(userAgent) && /Android/.test(userAgent) && /AppleWebKit/.test(userAgent) && !iChromeBrowser; addCssLink('PATH/NAME.css', function(){ console.log('css is loaded'); }); function addCssLink(href, onload) { var css = document.createElement("link"); css.setAttribute("rel", "stylesheet"); css.setAttribute("type", "text/css"); css.setAttribute("href", href); document.head.appendChild(css); if (onload) { if (isAndroidBrowser || !("onload" in css)) { waitForCss({ success: onload }); } else { css.onload = onload; } } } // We will check for css reset for "body" element- if success-> than css is loaded function waitForCss(params) { var maxWaitTime = 1000, stepTime = 50, alreadyWaitedTime = 0; function nextStep() { var startTime = +new Date(), endTime; setTimeout(function () { endTime = +new Date(); alreadyWaitedTime += (endTime - startTime); if (alreadyWaitedTime >= maxWaitTime) { params.fail && params.fail(); } else { // check for style- if no- revoke timer if (window.getComputedStyle(document.body).marginTop === '0px') { params.success(); } else { nextStep(); } } }, stepTime); } nextStep(); } 

Демо: http://codepen.io/malyw/pen/AuCtH