有没有办法从字符串加载CSS和JavaScript?(Is there any way to loa

2019-09-17 01:18发布

我已经看到了从文件加载CSS和JavaScript动态的例子很多。 这里有一个很好的例子 。 但有一种方式来加载CSS或JavaScript作为一个字符串? 例如,是这样的:

var style = ".class { width:100% }"
document.loadStyle(style);

或者说,自然的东西。

Answer 1:

var javascript = "alert('hello');";
eval(javascript);

这从一个字符串加载JavaScript,但被警告,这是非常不安全的,不推荐使用。 如果恶意程序曾经与你的JavaScript字符串的干扰,这可能会导致安全问题。

至于CSS的话,你可以使用jQuery,像这样追加的风格标签页面:

$('head').append("<style>body { background-color: grey; }</style>");

或者,JavaScript的纯粹主义者:

var s = document.createElement("style");
s.innerHTML = "body { background-color:white !important; }";
document.getElementsByTagName("head")[0].appendChild(s);


Answer 2:

另一种方法不使用潜在危险evalinnerHTML是创造一个link与base64编码URL元素:

function loadCSS(cssStyles) {
  const link = document.createElement('link');
  link.href = `data:text/css;base64,${btoa(cssStyles)}`;
  link.type = 'text/css';
  link.rel = 'stylesheet';
  document.getElementsByTagName('head')[0].appendChild(link);
}


文章来源: Is there any way to load css and javascript from a string?