複数のヘッダーをロードするブックマークレットを作成しました。一部の JS 一部の CSS。ヘッダー要素を作成した後onreadystatechange
、含まれているヘッダーがいつ読み込まれたかを確認します。
ただし、何らかの理由で、このチェックは css ヘッダーのサファリでは機能しません。
そのコードは次のとおりです。
var CssScript = document.createElement("link");
CssScript.href = "http://domain.com/css/bookmarklet.css";
CssScript.setAttribute('type', 'text/css');
CssScript.setAttribute('rel', 'stylesheet');
CssScript.setAttribute('media', 'all');
CssScript.setAttribute('id', 'yk_bookmarklet_css');
CssScript.onload = CssScript.onreadystatechange = function(){
console.log("asdfasdfasdfasdf");
if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) {
loaded_headers++;
console.log('Next2');
if(loaded_headers >= total_headers){
done = true;
$.getJSON("http://www.shopsavr.com/bookmarklet_getjson_functions.php?jsoncallback=?", {'url' : encodeURIComponent(document.URL)},
function(data){
collections = data.collecitons;
product_found = data.product;
uID = data.uID;
url = data.url;
window.mbm = false;
initMyBookmarklet();
});
}
}
};
これは、IE、FF、chrome、Opera で完全に機能します。Safari でのみ失敗します。