Mozilla WebExtensions Новое руководство

По этой ссылке https://developer.mozilla.org/en-US/Add-ons/WebExtensions

вы можете видеть, что теперь mozilla пытается сделать расширения Chrome и для Firefox с минимальными изменениями.

Если вы перейдете по этой ссылке, https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Porting_from_Google_Chrome

Есть руководство о том, как перенести расширение Chrome на аддон Firefox.

Моя проблема в том, что в манифесте должен быть "идентификатор дополнения"

и у него есть один пример, и я сделал свой манифест вот так.

    {
    "background": {
        "scripts": [
            "background.js"
        ]
    },

    "applications": {
    "gecko": {
    "id": "[email protected]",
    "strict_min_version": "3.1.3",
    "strict_max_version": "50.*"

  }
},

    "browser_action": {
        "default_icon": "img/icon19.png",
        "default_title": "iFB PRO v3 The Ultimate Tool for Invites in Facebook",
        "default_popup": "popup.html"
    },
    "icons": {
        "19": "img/icon19.png",
        "38": "img/icon38.png",
        "48": "img/icon_48_2.png",
        "128": "img/icon_128.png"
    },
    "manifest_version": 2,
    "name": "iFB PRO for Facebook Invites Events&Pages",
    "description": " This is the ULTIMATE Invite Tool for Events and Pages in Facebook!! ",
    "permissions": [ "activeTab" ],
    "version": "3.1.3"
}

POPUP.HTML

<html lang="en">
    <head>

        <script src="popup.js"></script>
        <script src="jquery.min.js"></script>
  <script src="bootstrap.min.js"></script>


          <style type="text/css" media="screen">
            body { min-width:250px; min-height:700px; text-align: center; }
            #click-me-l { font-size: 20px; }
            #click-me-f { font-size: 20px; }
            .btnExample 
            {
                color: #FFFFFF;
                background: #5CADFF;
                font-weight: bold;
                border: 5px solid #ff;
            }

            .btnExample:hover 
            {
                color: #FFFFFF;
                background: #2E8AE6;
                cursor: pointer;
            }


            .btnExample1 
            {
                color: #FFFFFF;
                background: #5CADFF;
                font-weight: bold;
                border: 5px solid #ff;
            }

            .btnExample1:hover 
            {
                color: #FFFFFF;
                background: #2E8AE6;
                cursor: pointer;

            }
        </style>

    </head>
    <body>
        <body bgcolor="#3B5998">
        <img src="img/ifb-sketo.png">
        <font  color="white"><h1>Click here to invite friends to Pages</h1></font>
        <button id='click-me-l' class="btnExample">Pages</button>
        <font  color="white"><h1>Click here to invite friends to Events</h1></font>
        <button id='click-me-f' class="btnExample1">Events</button>
        <br><font  color="white"><h2>Please consider a donation in my PayPal account. Click the image below!</h2></font>
          <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----
">
<input type="image" target="_blank" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img target="_blank" alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
<font  color="white"><h2>Click the image below to Like Us on Facebook</h2></font>
<a href="https://www.facebook.com/pages/IFB-Invite-all-to-Events-and-Pages/284580485083298" target="_blank"><img src="img/like.png">
    </body>
</html>

POPUP.JS

    function clickHandler1(e) {
        chrome.extension.sendMessage({directive: "popup-click-l"}, function(response) {
            this.close(); // close the popup when the background finishes processing request
        });
    }


 document.addEventListener('DOMContentLoaded', function () {
        document.getElementById('click-me-l').addEventListener('click', clickHandler1);

    })


     function clickHandler2(e) {
        chrome.extension.sendMessage({directive: "popup-click-f"}, function(response) {
            this.close(); // close the popup when the background finishes processing request
        });
    }


document.addEventListener('DOMContentLoaded', function () {
        document.getElementById('click-me-f').addEventListener('click', clickHandler2);

    })

BACKGROUND.JS

chrome.extension.onMessage.addListener(
    function(request, sender, sendResponse) {
        switch (request.directive) {

             case  "popup-click-l":
            // execute the content script
            chrome.tabs.executeScript(null, { // defaults to the current tab
                file: "pages.js", // script to inject into page and run in sandbox
                allFrames: true // This injects script into iframes in the page and doesn't work before 4.0.266.0.
            });
            sendResponse({}); // sending back empty response to sender
            break;
        case  "popup-click-f":
            // execute the content script
            chrome.tabs.executeScript(null, { // defaults to the current tab
                file: "events.js", // script to inject into page and run in sandbox
                allFrames: true // This injects script into iframes in the page and doesn't work before 4.0.266.0.
            });
            sendResponse({}); // sending back empty response to sender
            break;
        }
    }
);

chrome.runtime.onInstalled.addListener( function(details) {
  switch(details.reason) {
    case "install":

       chrome.tabs.create({url: "https://www.facebook.com/pages/IFB-Invite-all-to-Events-and-Pages/284580485083298?sk=app_128953167177144&ref=page_internal"});


      break;
    case "update":


      break;
  }
});

И тогда у меня есть 2 файла js с простым кодом javascript внутри.

Я отлично устанавливаю свое расширение в firefox каждую ночь, он открывает popup.html, но когда я нажимаю кнопки, код javascript не выполняется.

Кто-нибудь знает, почему не работает?

В качестве хромового расширения он отлично работает.


person Konstantinos Natsios    schedule 23.09.2015    source источник
comment
Вот пошаговое руководство: hacks.mozilla.org/ 2015/09 / plays_write_a_webextension /   -  person Noitidart    schedule 23.09.2015


Ответы (1)


Некоторые части API расширения Chrome еще не перенесены. Дополнительную информацию см. В документации: https://wiki.mozilla.org/WebExtensions#List_of_supported_APIs

другая страница, где перечислены поддерживаемые API, находится здесь http://www.arewewebextensionsyet.com/

person user280109    schedule 23.09.2015
comment
можете ли вы связать мне документацию о том, что было импортировано, пожалуйста? - person Konstantinos Natsios; 23.09.2015
comment
извините, я ошибся относительно передачи сообщений, они поддерживают chrome.runtime.sendmessage, это просто собственный обмен сообщениями, который они еще не поддерживают, ссылка bwintons показывает, какие API поддерживаются, а какие еще нет. спасибо, bwinton, я попытался найти эту ссылку, но не смог найти ее снова. - person user280109; 24.09.2015
comment
Так почему мое расширение не работает? Я не отправляю собственные сообщения - person Konstantinos Natsios; 29.09.2015
comment
api webextensions все еще находится в бета-режиме, они работают над ним и исправляют в нем ошибки, он должен работать нормально, когда они выпустят его официально. Вы можете проверить текущий список ошибок в API здесь: arewewebextensionsyet.com - person user280109; 05.02.2016