2016-11-07 130 views
0

我建立跨瀏覽器的擴展,我使用jQuery在文件創建適用於iframe:MS邊緣的iFrame CSS

$iframe = $("<iframe/>"); 

$iframe.on("load", function() { 
    var font = browser.runtime.getURL("css/font.css"); 
    var style = browser.runtime.getURL("css/style.css"); 

    // on safari I use window.safari.extension.baseURI + path 

    $iframe.contents().find("head").append([ 
     "<link href='"+font+"' rel='stylesheet' type='text/css'/>", 
     "<link href='"+style+"' rel='stylesheet' type='text/css'/>", 
    ]); 
}); 

$iframe.appendTo("html"); 

此工程在瀏覽器:Chrome瀏覽器,火狐,Safari,歌劇,但MS不起作用邊緣。 iframe被創建,內容被注入。但是這種風格不適用於iframe內容。這隻發生在MS Edge中。

什麼可能是錯的?

回答

1

經過深入研究後,我發現IE和MS Edge動態樣式表加載存在問題,創建「鏈接」元素時應該添加最後一個「href」屬性。

然而,許多不成功的嘗試後,我能找到的解決方案,爲我工作(需要注意的是href屬性必須是確實是最後一個):

$iframe.contents().find("head").append([ 
    $("<link rel='stylesheet' type='text/css' href='"+font+"'/>"), 
    $("<link rel='stylesheet' type='text/css' href='"+style+"'/>") 
]); 

我不知道爲什麼是這樣工作的。

+0

提交給他們的bug跟蹤器:對於任何面臨同樣問題的人,請點擊報告問題以增加壓力:https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10258970/ – reddy