【问题标题】:Display Dialog from Chrome Extension来自 Chrome 扩展的显示对话框
【发布时间】:2010-01-02 17:35:46
【问题描述】:

当用户创建书签时,我试图在 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>

【问题讨论】:

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


    【解决方案1】:

    您不能在后台页面中使用这样的对话框:

    background-pages

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

    Google Chrome Extensions Options

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

    method-getselected

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

    method-executescript

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 感谢您的澄清 (+1)。使用来自 Mohamed 的信息,我能够显示一个对话框(嗯,有点 - 它看起来不正确,但至少有一些东西在那里),虽然它是在页面加载时执行的,而不是在我实际添加书签(它似乎是任意做的)。这对我来说是一个症结所在。我愿意接受建议,但我也没有时间真正玩弄它(生活一直很忙)所以它可能很简单。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多