crossrider弹出内容操作

时间:2013-06-14 01:07:15

标签: google-chrome google-chrome-extension firefox-addon browser-extension crossrider

我正在使用crossrider应用程序框架创建一个应用程序来创建chrome / firefox / safari扩展。该功能是当用户上网时,他/她可以将他们所在的网站加入书签,这样就可以在以后添加功能。

对于同样的情况,我需要首先向用户显示登录/注册屏幕,如果用户尚未登录按钮单击时打开的“弹出窗口”。如果用户已登录,我需要再次通过弹出窗口将标签网址添加到用户列表中。身份验证将通过远程应用程序进行。

我用谷歌搜索并阅读了交叉驾驶员api以找到一种操纵DOM元素的方法,在“弹出窗口”内部加载图像无法找到方法。我不太确定如何去做。任何帮助是极大的赞赏。

我是否也应该考虑更改框架?在那种情况下,建议是什么?

如果以上是抽象的话,我很乐意提供更多细节。

1 个答案:

答案 0 :(得分:3)

感谢您的询问。你有几个方面的问题,我会尝试以一般的方式回答每个问题。

  1. 登录:在appAPI.browserAction.onClick回调中,在保存书签之前,如果用户未登录,您当然可以添加代码以显示登录弹出窗口。您可以使用向用户显示的表单来实现此目的以下几种方式之一,例如使用我们的侧边栏插件或jQUeryUI。

  2. 标签网址:由于我假设您使用扩展程序按钮来触发书签保存,因此您需要在后台范围内定义按钮回调的网址。实现此目的的最简单方法是使用appAPI.tabs.onTabSelectionChanged方法跟踪活动标签,例如:

  3. background.js

    appAPI.ready(function() {
    var activeTab = null;
    
      appAPI.tabs.onTabSelectionChanged(function(tabInfo) {
        activeTab = tabInfo.tabUrl;
      });
    });
    

    因此,将两个想法放在一起,您的代码可能类似于:

    background.js

    appAPI.ready(function() {
      var activeTabURL = null;
    
      // Keep track of activeTabs URL
      appAPI.tabs.onTabSelectionChanged(function(tabInfo) {
        activeTabURL = tabInfo.tabUrl;
      });
    
      // Configure button
      appAPI.browserAction.setResourceIcon('icon.png');
      appAPI.browserAction.onClick(function() {
        // Code to check if user is logged in
        if (!userLoggedIn) {
          // Send message to extension scope to display login form
          appAPI.message.toActiveTab({action:'userLogin', bookmarkURL: activeTabURL});
          return;
        }
        // User already logged in, save activeTab's URL
        saveBookmark(activeTabURL);
      });
    
      // Listen for message that user has logged in and save bookmarkURL
      appAPI.message.addListener(function(msg) {
        if (msg.action === 'saveBookmark') saveBookmark(msg.bookmarkURL);
      });
    
      // Common function to save bookmark URL
      function saveBookmark(bookmarkURL) {
        // Your bookmark save function
      }
    });
    

    extension.js

    appAPI.ready(function($) {
      appAPI.message.addListener(function($) {
        if (msg.action === 'userLogin') {
          // your code for user login
          ...
          // Once user logged in send message to background to save bookmarkURL
          if (userLoggedIn) {
            appAPI.message,toBackground({action:'saveBookmark', boomarkURL:msg.bookmarkURL});
            return;
          }
        }
      });
    });