javascript - iPad 上动态附加的 <style> 不触发 OnLoad 事件

标签 javascript ios ipad onload

有人知道为什么在以下情况下 iPad 上不会触发 onload 事件吗?我试过使用 jQuery $.load() 和纯 javascript 但仍然无济于事。我的 google-fu 不足以找到答案:(

var head = document.head || document.getElementsByTagName('head')[0];
var linkEl = document.createElement('link');
linkEl.type = 'text/css';
linkEl.rel = 'stylesheet';
linkEl.href = "my_stylesheet.css"; 

// This doesn't work on ipad
linkEl.onload = function() {
    alert('css is loaded');
}

head.appendChild(linkEl);

演示:http://jsfiddle.net/cYFYE/

最佳答案

我知道FireFox 和Safari 没有load链接样式表的事件,因此 iOS Safari 可能也没有。我个人通过对样式表发出 ajax 请求来解决这个问题,然后将响应放在 <style> 中。标签。

我已经更新了你的 jsFiddle:http://jsfiddle.net/rgthree/cYFYE/2/

function loadCss(src, callback){
    jQuery.ajax({
        url: src,
        success: function(response){
          // Create Stylesheet
          var style = document.createElement('style');
          style.type = 'text/css';
          style.media = 'screen';
          if(style.styleSheet){
            style.styleSheet.cssText = response;
          }else{
            style.appendChild(document.createTextNode(response));
          }
          document.head.appendChild(style);
          callback && callback();
        }
    });
}
loadCss('/css/normalize.css', function(){ alert('loaded!'); });

关于javascript - iPad 上动态附加的 &lt;style&gt; 不触发 OnLoad 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15301632/

相关文章:

javascript - 为什么我必须将一个函数包含在另一个函数中?

javascript - 访问对象内数组的元素

jquery - 防止 iOS 捏合事件注册为点击

ios - iPhone开发: what will [[UIDevice currentDevice] model] return for "iPad"?

javascript - 在第一次点击后 2 秒内响应第二次点击的程序

javascript - 显示数组中的至少一项在线项目

ios - 单边角的反向 UIBezierPath

iOS 在 Objective-C 中登录/注销过程后更改 rootViewController

ios - 使用 JSONKIT 序列化 NSNumber 时出错

iphone - 奇怪的赋值错误