Chrome:事件处理程序点击进入facebook共享程序



所以我现在有很多麻烦,我必须在3天内完成项目,并且我被chrome扩展中的链接卡住了。

项目:

一个谷歌chrome扩展,可以显示当前选项卡中的所有可用图像,并共享到多个社交网络。

到目前为止,我的扩展程序从当前选项卡获取所有图像,绝对或动态路径,并在popup.html中显示它们,我需要在网站图像的右侧添加一个带有facebook标志的图像,如果它链接到sharer.php

我使用angular.js框架。我的文件:

Popup.html-这是显示图像的div。

 <script src="js/lib/jquery-1.8.2.min.js"></script>
    <script src="js/lib/angular.min.js"></script>
    <script src="js/app/app.js"></script>
    <script src="js/app/popup.js"></script>
    <script src="js/app/bindclick.js"></script>
 <div ng-controller="PageController">
            <div>{{message}}</div>
            <h2>Page:</h2>
            <div>{{title}}</div>
            <div id="url">{{url}}</div>
            <h2>Has Links:</h2>
            <ul>
                <li ng-repeat="pageInfo in pageInfos">
                    <div><img src={{pageInfo}} class="imagemPopup"/><img src="http://formaemflor.com.br/loja/skin/frontend/default/perfume/images/facebook_icon.png" class="fblink" style="width: 50px; height: 50px"/></a></div>
                </li>                       
            </ul>
        </div>

content.js

//alert('content script loaded');
chrome.extension.onMessage.addListener(
function (request, sender, sendResponse) {
    if (request.action == 'PageInfo') {
        var pageInfos = [];
        $('img').each(function() {
            pageInfos.push($(this)[0].src);
        });
        sendResponse(pageInfos);
    }
});

popup.js

myApp.service('pageInfoService', function() {
    this.getInfo = function(callback) {
        var model = {};
        chrome.tabs.query({'active': true},
        function (tabs) {
            if (tabs.length > 0)
            {
                model.title = tabs[0].title;
                model.url = tabs[0].url;
                chrome.tabs.sendMessage(tabs[0].id, { 'action': 'PageInfo' }, function (response) {
                    model.pageInfos = response;
                    callback(model);
                });
            }
        });
    };
});
myApp.controller("PageController", function ($scope, pageInfoService) {
    pageInfoService.getInfo(function (info) {           
        $scope.title = info.title;
        $scope.url = info.url;
        $scope.pageInfos = info.pageInfos;
        $scope.$apply();

    });
});

我想将事件处理程序应用于bindclick.js,它应该是类似的。

document.getElementById('.fblink').addEventHandler('click', function(){
 var url='http://www.facebook.com/sharer/sharer.php?u='+pageInfo.url;
 chrome.tabs.create({ url: url });
});

我尝试了所有的东西,但我无法使onclick事件工作,你能给我代码吗?我真的需要了解chrome扩展的人的帮助,如果可能的话,请添加我的skype,这样我就可以快速学习beirao94

首先,fblink是一个类,而不是id,所以getElementById将不起作用。使用document.querySelectordocument.querySelectorAll执行此操作。

看起来您正在使用AngularJS,这些链接将由AngularJS生成(在<li ng-repeat=...>块内)。您必须使用ng-click属性以AngularJS方式处理点击事件。看见http://docs.angularjs.org/tutorial/step_10了解更多信息。

折叠什么方 觉说,我是来和你分享解决方案的。

angularjs有一个叫做ng-click的函数,所以我们在popup.html 中做的是

<img src="http://formaemflor.com.br/loja/skin/frontend/default/perfume/images/facebook_icon.png" class="fblink" ng-click"sharefb(pageInfo)"/>

现在在控制器内的popup.js中,我们进行

 $scope.sharefb = function($url){
         chrome.window.create({url: 'http://www.facebook.com/sharer/sharer.php?u='+$url}); // or
         chrome.tabs.create({url: 'http://www.facebook.com/sharer/sharer.php?u='+$url)];
};

因此,我们可以在html代码中轻松地调用javascript函数,即使使用manifest v2也是如此。

最新更新