当我用一些HTML替换XML DOM并注入一些js时,js无法运行

时间:2018-08-28 10:30:59

标签: javascript html xml

我正在尝试制作一个书签,将当前页面上的DOM换成新的书签,然后注入并运行一些javascript。

当原始页面为HTML时,效果很好(所以我认为这不是CORS问题)。但是,当原始页面为XML时,注入的javascript无法运行:(为什么不这样做?如何使其正常工作?

下面是一些示例书签代码:

(function () {
  var jsHref = 'https://rawgit.com/andylolz/b2e894fa5ccdecacd901c05769fa97fe/raw/289719871f859a1b19e06f8b8ce3769f0002ce55/js.js';
  var htmlHref = 'https://rawgit.com/andylolz/b2e894fa5ccdecacd901c05769fa97fe/raw/289719871f859a1b19e06f8b8ce3769f0002ce55/html.html';

  // fetch some HTML
  var xhr = new XMLHttpRequest();
  xhr.open('GET', htmlHref, false);
  xhr.send();
  var htmlString = xhr.response;
  var parser = new DOMParser();
  var result = parser.parseFromString(htmlString, 'text/html');

  // swap the DOM for the fetched HTML
  document.replaceChild(document.adoptNode(result.documentElement), document.documentElement);

  // inject some javascript
  var sc = document.createElement('script');
  sc.setAttribute('src', jsHref);
  document.documentElement.appendChild(sc);
})();

此处正在使用Codepen(在HTML页面上): https://codepen.io/anon/pen/wEWemL?editors=1010

再次–如果我在XML页面上运行上述代码,则大多数情况下都有效,但是注入的javascript无法执行。

谢谢!

0 个答案:

没有答案