【问题标题】:How to move jQuery object between scripts in firefox addon?如何在 Firefox 插件中的脚本之间移动 jQuery 对象?
【发布时间】:2014-12-22 02:16:50
【问题描述】:

我的插件和脚本中有一个带有脚本和 jQuery 的面板,该面板运行到页面中。 如何将对象从面板复制到页面?

main.js

var tabs = require("sdk/tabs");
var self = require("sdk/self");
var button = require("sdk/ui/button/action").ActionButton({
    id: "show-panel",
    label: "Show Panel",
    icon: {
        "16": "./icon-16.png",
        "32": "./icon-32.png",
        "64": "./icon-64.png"
    },
    onClick: handleClick
});
var panel = require("sdk/panel").Panel({
    contentURL: self.data.url("page.html"),
    contentScriptFile: [self.data.url("jquery-2.1.1.min.js"), self.data.url("panel-script.js")],
    position: button
});

function handleClick() {
    panel.show();
    var worker = tabs.activeTab.attach({
        contentScriptFile: [self.data.url("jquery-2.1.1.min.js"), self.data.url("page-script.js")]
    });
    panel.port.emit('to-panel');
    panel.port.on("from-panel", function(pic) {
        worker.port.emit("to-page", pic);
    });
}

panel.html

<html>
<head>
</head>
<body>
    <img src="icon-64.png" class="add-img" alt="">
    <button class="click">Click Me!</button>
</body>
</html>

panel.js

self.port.on("to-panel", function() {
    var pic = $('.add-img');
    $('button.click').on('click', function(){
        self.port.emit("from-panel", pic);
    });
});

page.js

self.port.on("to-page", function(pic) {
    $('body').append(pic);
});

我想从面板中复制元素并将其放置到页面中。 我尝试将其设置为名为“pic”的变量并传输到 page.js 以放置在网页上,但它不起作用。然而,简单的字符串很容易传输并放置在页面上。

浏览器控制台显示“TypeError: a is undefined”。

请帮助并为英语不好感到抱歉。

【问题讨论】:

    标签: jquery object firefox-addon


    【解决方案1】:

    var myobjStr = JSON.stringify(myObj) 面板中的对象。然后将其转换为字符串。所以现在将该字符串传递给您的页面,然后在您的粘贴中像这样解析它:

    var myobjFromStr = JSON.parse(myobjStr)

    【讨论】:

    • 它没有帮助。我忘记写了,浏览器控制台显示“TypeError: a is undefined”。
    • 有趣的是,您上面的代码中没有a,所以我不知道它来自哪里。但是将它作为字符串传递是在上下文之间传递的唯一方法,我很确定。
    • 我想我做错了。 var pic = $('.add-img'); var myobjStr = JSON.stringify(pic); 然后var myobjFromStr = JSON.parse(myobjStr); $('body').append(myobjFromStr); 我不能使用这个对象,我错在哪里?
    • 我是创建 Firefox 插件和 git 的新手,所以在这里github.com/through-a-haze/sandbox/blob/master/my-addon.xpi 不幸的是,经过一天的工作,我没有太多时间去做这件事。所以如果你能告诉我我的错误,我将不胜感激。
    • 好吧,看来我能解决我的问题了)更新了我的 github github.com/through-a-haze/sandbox
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多