我正在尝试制作一个书签,将当前页面上的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无法执行。
谢谢!