Проблемы с закладкой для добавления CSS в IE9 - PullRequest
2 голосов
/ 31 мая 2011

Я сделал букмарклет, чтобы добавить пользовательский файл CSS на любую страницу.Прекрасно работает в FF и в Safari, но я не могу заставить его работать в IE9.

В инспекторе DOM ничего не происходит, и я не получаю ошибки ... :( Я пытался выполнить его непосредственно вконсоль, но та же проблема там ...

Любая помощь приветствуется.

Это мой код:

(function(d,u){

if(d.createStyleSheet) {
  d.createStyleSheet( u );
} else {
  var styles = "@import url('"+u+"');",
      css=d.createElement('link');
  css.rel='stylesheet';
  css.href='data:text/css,'+escape(styles);
  d.getElementsByTagName("head")[0].appendChild(css);
}

}(document, "\\vmware-host\Shared%20Folders\css.css"))

Это тот же код, что и букмарклет ...

javascript:(function(d,u){if(d.createStyleSheet){ d.createStyleSheet( u ); }else{var styles = "@import url('"+u+"');",css=d.createElement('link');css.rel='stylesheet';css.href='data:text/css,'+escape(styles);d.getElementsByTagName("head")[0].appendChild(css);}}(document, "\\vmware-host\Shared%20Folders\"))

edit когда я помещаю его прямо в URL, он говорит мне, что IE9 изменил страницу, чтобы предотвратить межсайтовый скриптинг: / Любое решение? (И он удаляетjavascript: часть и bing's it: /)

Ответы [ 2 ]

1 голос
/ 31 мая 2011

Попробуйте - как предложено ghommey - Если у вас есть проблемы из-за разного происхождения, то IE повысил безопасность (имеет смысл, так как css может делать много вещей), и вам нужно будет использовать прокси.Тем не менее: посмотрите на IE9. Не применяйте связанные таблицы стилей

(function(d,u){

if(d.createStyleSheet) {
  d.createStyleSheet( u );
} else {
  var css=d.createElement('style');
  css.setAttribute("type","text/css");
  css.appendChild(document.createTextNode("@import url("+u+")"));
  d.getElementsByTagName("head")[0].appendChild(css);
}

}(document, "http://server/some.css"))

. Не забывайте избегать обратной косой черты, если вы используете локальные файлы - например, путь к серверу \\ должен быть\\\\

1 голос
/ 31 мая 2011

Я проверял это в IE8 и Firefox, просто изменил определение href:

(function(d,u ){
    if(d.createStyleSheet) {
        d.createStyleSheet(u);
    }
    else {
        var css = d.createElement('link');
        css.rel = 'stylesheet';
        css.href = u;
        d.getElementsByTagName("head")[0].appendChild(css);
    }
}(document, "test.css"))

Bookmarklet:

javascript:(function(d,u ){ if(d.createStyleSheet) {  d.createStyleSheet(u); } else {  var css = d.createElement('link');  css.rel = 'stylesheet';  css.href = u;  d.getElementsByTagName("head")[0].appendChild(css); }}(document, "test.css"))
...