Расширение Chrome: почему я не могу передать переменную в функцию (JS) - PullRequest
0 голосов
/ 26 июня 2019

Я новичок в JavaScript. Сейчас я работаю над расширением Chrome.

Мне нужно проанализировать имя проекта со страницы (Vtiger CRM), затем создать карту в Trello, имя карты должно быть именем проанализированного проекта. (извините за мой английский).

manifest.json

    {
    "manifest_version": 2,
    "name": "Roonyx VTIGER optimizer",
    "version": "0.0.1",
    "description": "Создание доски в Trello и чата в Discord",
    "icons": {
        "64": "icon.png"
    },
    "browser_action": {
        "default_icon": "icon.png",
        "default_title": "Roonyx VTIGER optimizer",
        "default_popup": "popup.html"
    },
    "web_accessible_resources": [
        "settings/index.html",
        "popup.html"
    ],
    "options_page": "settings/index.html",
    "content_scripts": [
        {
            "js": [
                "scripts/jquery-2.1.1.js",
                "scripts/client.js",
                "scripts/key.js",
                "scripts/settings.js",
                "scripts/hashSearch.js"
            ],
            "run_at": "document_idle",
            "matches": [ "<all_urls>" ]
        }
    ],
    "background": {
      "scripts": ["scripts/background.js"],
      "persistent": false
    },
    "permissions": ["storage", "identity", "tabs", "<all_urls>"]
}

Вот часть моего кода background.js:

var myProject;

chrome.extension.onMessage.addListener(
    function(request, sender, sendResponse) {
      window.myProject = $(request.content).find(".projectname").text(); 
    });

chrome.tabs.getSelected(null, function(tab) {
    chrome.tabs.executeScript(tab.id, {
        code: "chrome.extension.sendMessage({content: document.body.innerHTML}, function(response) { console.log('success'); });"
    }, function() { console.log('done'); });
});

// Trello Creating Card

var APP_KEY = '*app_key*';
var myList = '5d1089c67893fe7afb014694';

function trelloInit() {
    Trello.setKey(APP_KEY);
    Trello.setToken(localStorage.getItem('trello_token'));
}

var creationSuccess = function (data) {
    console.log('Card created successfully.');
    console.log(JSON.stringify(data, null, 2));
    console.log(myProject);
};

var newCard = {
    name: myProject, 
    desc: 'This is the description of our new card.',
    // Place this card at the top of our list 
    idList: myList,
    pos: 'top'
};

function createCard() {
    $("#trello_create_card").click(function () {
        trelloInit();
        Trello.post('/cards/', newCard, creationSuccess);     
    });
}

$(document).ready(createCard);

Я вижу нужное имя проекта в консоли, как и ожидалось, когда скрипт выполняет «console.log (myProject)» в функции creationSuccess.

Но я вижу созданную карточку с пустым именем в Trello. Я уже пытался использовать window.myProject в newCard, но ничего не меняется ...

Если вам нужно увидеть все настройки, вы можете увидеть репо на GitHub: https://github.com/AnatolySt/chrome-roonyx

Может кто-нибудь объяснить, что я делаю не так, пожалуйста? Заранее спасибо)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...