addons.mozilla.org 验证在 JavaScript 中显示编译时错误

addons.mozilla.org validation shows compile-time error in the JavaScript

注意:插件工作正常,但在 firefox 验证插件网站出现错误 https://addons.mozilla.org/en-us/developers/addon/validate

我的代码

panel.port.on("changing_now_speed_val", function (speed) {

    var com = 'document.getElementsByTagName("video")[0].playbackRate='+speed + ';';
    tabs.activeTab.attach({
        contentScript: com
    });
});

错误 在对其进行测试时说

https://addons.mozilla.org/en-us/developers/addon/validate

Extension Tests

JavaScript Compile-Time Error

Warning: A compile-time error in the JavaScript halted validation of that file.

Message: expected expression, got ';
resources/html5_youtube_video_speed_controller/lib/main.js

但插件正常工作

https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts/Loading_Content_Scripts

“除非您的内容脚本非常简单并且只包含一个静态字符串,否则不要使用 contentScript:如果您这样做,您的附加组件可能无法在 AMO 上获得批准。

相反,将脚本保存在单独的文件中并使用 contentScriptFile 加载它。这使您的代码更易于维护、保护、调试和审查

那里有更多信息:

https://bugzilla.mozilla.org/show_bug.cgi?id=1185355

也许试试:

panel.port.on("changing_now_speed_val", function (speed) {

    speed = speed || 1;
    if (speed.trim() === "") {
        speed = 1;
    }

....

这只是一些健全性检查,确保速度的值永远不会为空或空值。这应该通过 testing/validation.

中的边缘情况
speed = speed || 1;

防止代码在速度上没有传递任何内容时被破坏

if 条件检查不应传递空字符串。

为了使它更不易损坏,您可以检查是否可以将 speed 转换为有效整数。那将是一个很好的解决方案。

此外,参考bugzilla中的评论,您可以使用外部文件:

这可能可以通过这样的方式来完成:

var data = self.data;
panel.port.on("changing_now_speed_val", function (speed) {
    var workers = tabs.activeTab.attach({
        contentScriptFile:[data.url('externalFile.js')]
    });
    workers.emit('speedChanged', speed)
}

然后在插件的 data/ 文件夹中,创建一个文件 externalFile.js,其中应包含如下内容:

self.port.on('speedChanged', function(speed){
    speed = speed || 1;
    speed = speed.trim() === "" ? 1 : speed; //little ternary trick
    document.getElementsByTagName("video")[0].playbackRate='+speed + ';';
}

我想这说明了一些事情。如果您有任何问题,请回复我!快乐的附加!