首页 > 解决方案 > 如何通过greasemonkey用户脚本使webshim工作?

问题描述

我正在制作一个用户脚本,将 shims 和 polyfills 放入页面中。我也包括了 Webshim,但它似乎没有做任何事情。

这就是我包含它的方式:

var script = document.createElement("script");
script.src = "http://code.jquery.com/jquery-2.1.0.min.js";
var head = document.getElementsByTagName("head")[0];

head.insertBefore(script, head.firstChild);

var script = document.createElement("script");
script.src = "https://cdnjs.cloudflare.com/ajax/libs/webshim/1.16.0/minified/polyfiller.js";

head.insertBefore(script, head.firstChild);

var script = document.createElement("script");
script.innerHTML =
"webshims.setOptions('extendNative', true);webshims.polyfill();";

head.insertBefore(script, head.firstChild);

(insertBefore-ing 因为脚本标签在插入时运行)

这会导致 webshim 明显运行,并且没有任何错误。我在 Firefox 3.x 上尝试了它,我很确定这意味着它必须填充很多东西,但它似乎根本没有做任何事情。在 Firebug Net 面板中看到,它甚至似乎没有连接到任何其他 .js 文件,只有一个 shim-ext.css 文件。我去了显然有视频元素和其他 html5 内容的网页,但它仍然没有做任何事情。我以为我必须在元素或其他东西上放一些特殊的类名,但既不是 http://afarkas.github.io/webshim/demos/也不 是https://github.com/aFarkas/webshim或我发现的任何 stackoverflow 帖子或教程都提到了这一点。我认为问题在于它找不到其他文件,但它显然可以找到 shim-ext.css,我发现这种方法可以将它包含在 stackoverflow 中,唯一的区别是我在greasemonkey 中运行它。

用户脚本在“文档开始”处运行,我检查它是否在任何其他脚本之前运行,甚至在元素存在之前运行。如果我特别要求像'webshim.polyfill('forms');'这样的功能 它仍然无法工作或连接到任何东西。用户脚本在 Webshim 之前的页面中包括 ECMAScript 5 shim&sham、ECMAScript 6 shim&sham 和 HTML5shiv,以及它的最新版本。无论是否设置 basePath 和 extendNative,它仍然是一样的。

标签: javascriptgreasemonkeyuserscriptswebshim

解决方案


推荐阅读