Userscript metadata eaten by Chrome
Chrome似乎正在吞噬我的用户脚本元数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // ==UserScript== // @name Flag Offtopic button // @version 1.0 // @description Vote-to-off-topic button // @author Manish Goregaokar (http://stackapps.com/users/10098/manishearth) // @license GNU GPL v3 (http://gnu.org/copyleft/gpl.html) // @include http://meta.stackexchange.com/questions/* // ==/UserScript== function with_jquery(f) { var script = document.createElement("script"); script.type ="text/javascript"; script.textContent ="(" + f.toString() +")(jQuery)"; document.body.appendChild(script); }; //(rest of script availible on request) |
脚本可以工作,但是元数据不能工作(它尝试在每个站点上运行,文件名显示而不是"flag offtopic but t on"等)
我不熟悉用户脚本,所以我不知道自己做错了什么。毫无疑问,这是愚蠢的。
附加信息:最初,脚本有一个不兼容的字符集(不知道为什么)。我使用Dreamweaver的modify>page属性将它改为utf-8,脚本工作(使用元数据)。后来,它破坏了元数据(不记得什么时候),但我认为这是一个错误的空间。现在我找不到问题所在。上述代码本身(复制粘贴到记事本、保存为
毫无疑问,一个utf-8bom隐藏在文档的前面。前几天那个问题让我很不舒服。
(为什么utf-8bom甚至存在当然是一个好问题,但是为什么编辑们甚至使用它们确实令人困惑。)
在编码设置为"unicode(utf-8)"的情况下保存脚本(至少在使用bbedit的Mac上)会触发操作问题。
将脚本保存为"western(iso拉丁语1)"可以修复它。
(为了完整起见:Google Chrome 19.0.1084.56,尽管我认为这不相关。)
修理它。可能是编码变化的产物——一些隐藏的字符。
我只是将代码复制到一个新文件(以前我一直在复制整个shebang),从一个工作脚本复制头文件,然后修改它们。它起作用了。
更新:经过一点调查,编码的变化已经把第一个字符搞混了。JS没有解析它,所以脚本仍然有效,但是Chrome/GM不喜欢它。
FWIW:
1 2 3 4 5 6 7 8 9 | // ==UserScript== // @name Flag Offtopic button // @version 1.0 // @author Manish Goregaokar (http://stackapps.com/users/10098/manishearth) // @description Adds a self-navigating"Flag-offtopic" button to MSO // @license GNU GPL v3 (http://www.gnu.org/copyleft/gpl.html) // @include http://meta.stackexchange.com/questions/* // ==/UserScript== |