从Chrome扩展程序显示对话框

时间:2010-01-02 17:35:46

标签: javascript google-chrome google-chrome-extension

我想在用户创建书签时在Chrome中显示模态Javascript对话框。但是,在尝试Closure和SimpleModal + JQuery之后,我似乎无法显示一个对话框。这是Chrome的扩展限制,还是我做错了什么? (我还在学习Javascript,所以我很缺乏理解它可能就是原因。)

这是我使用Closure的代码。它确实使它成为函数,因此工作正常。有什么建议?谢谢!

<html>
    <head>
        <script src="./lib/closure-library/closure/goog/base.js"></script>
        <script type="text/javascript" src="./lib/closure-library/closure/goog/deps.js"></script>
        <script>goog.require('goog.ui.Dialog');</script>
        <script type="text/javascript">
            chrome.bookmarks.onCreated.addListener(function(id, bookmark) {
                // Setup the dialog box.
                var dialog1 = new goog.ui.Dialog();
                dialog1.setContent('[Insert Placeholder]');
                dialog1.setTitle('Title Placeholder');

                // Display dialog.
                dialog1.setVisible(true);
            });
        </script>
    </head>
    <body>
        <!-- Do Nothing -->
    </body>
</html>

2 个答案:

答案 0 :(得分:3)

您无法在后台页面中使用此类对话框:

<强> background-pages

您可以为选项页面执行此操作:

<强> Google Chrome Extensions Options

因此,在您的情况下,您可能希望在onCreated上收听书签,并且由于您想要执行对话框,因此您需要与页面本身进行通信。因此,您可以通过以下方式获取selectedTab:

<强> method-getselected

获得标签后,您就可以执行JavaScript:

<强> method-executescript

答案 1 :(得分:2)

为了澄清Mohamed的回答,闭包的模态对话框是页内HTML。这可能实际上在您的代码中工作,但由于您在后台页面中执行此操作,并且后台页面不可见,因此您看不到它。您可以使用从后台页面使用window.open或window.alert的技术,但不能尝试向用户显示交互式HTML的内容。为此,您需要将内容放入弹出窗口或Mohamed建议的页面本身。