【发布时间】:2011-09-10 21:48:53
【问题描述】:
我正在编写一个用户脚本 (=Greasemonkey),我在 FireFox 中开发,但在 Opera、FF 和 Chrome 中工作。我在 Firefox 中更改了整个脚本,用变量替换了所有文本,以便能够轻松地将脚本移植到其他语言。现在它不再在 Opera 中运行,并且它不会在控制台(蜻蜓)中显示任何错误。该脚本什么都不做,所以一定有一些语法错误,Firefox 可以处理,但 Opera 不行。
正如我所说,我没有使用任何特定的 FireFox 功能 (GM_*):我只是用新的“翻译”数组中定义的变量替换了脚本中的字符串。
插入我的脚本的代码:
(
function()
{
var script = document.createElement("script");
script.textContent = "(" + myFunctionName + ")()";
document.body.appendChild(script);
}
)();
所以...
是否有一些 Firefox 可以处理但 Opera 不能处理的 JavaScript 内容?
或者我可以让错误控制台为用户脚本工作吗?
我做了一些谷歌搜索并搜索了这些论坛,但找不到任何有用的东西......
PS:我首先在 Opera 论坛上发布了这个,但我认为我有更好的机会在 SOF 上找到“调试解决方法”。
PPS:与此同时,我也尝试使用 JS Lint 来定位问题,但是当你打喷嚏时会出现错误。
【问题讨论】:
-
script.textContent = "(" + myFunctionName + ")()";形式不佳,可能是问题的一部分(我不在 Opera 上开发)。这会更好script.textContent = "(" + myFunctionName.toString() + ")()"; -
其他人告诉我删除 .toString() 因为它是上下文中的默认行为?
-
至少是某些浏览器的行为。我不知道它是否是规范的一部分。但是,删除 toString() 会混淆代码应该做的事情——这总是一种不好的做法。
标签: javascript debugging greasemonkey opera-dragonfly