Как вызвать функцию в расширении Chrome, используя Angular 2? [Дубликат]

Я потратил приличное время, пытаясь решить эту проблему. Я думал, что я как-то неправильно установил свой путь к классу, но проблема заключалась в том, что я набрал:

java -cp C:/java/MyClasses C:/java/MyClasses/utilities/myapp/Cool  

вместо:

java -cp C:/java/MyClasses utilities/myapp/Cool   

Я думал, что значение полностью квалифицированного означает укажите полное имя пути вместо полного имени пакета.

23
задан Rob W 13 July 2013 в 22:13
поделиться

2 ответа

Ваш код не работает, потому что он нарушает политику безопасности по умолчанию . Я создал скринкаст одной минуты, чтобы показать, что не так:

Во-первых, я показал, как отладить проблему. Щелкните правой кнопкой мыши по вашей всплывающей кнопке и нажмите «Осмотреть всплывающее окно» . После этого вы увидите следующее сообщение об ошибке:

Отказано для выполнения встроенного скрипта, поскольку оно нарушает следующую директиву политики безопасности контента: «script-src» self 'chrome-extension-resource: ".

Это объясняет, что ваш код не работает, потому что он нарушает CSP по умолчанию: Встроенный JavaScript не будет выполнен . Чтобы решить эту проблему, вам нужно удалить все встроенные JavaScript из вашего HTML-файла и поместить их в отдельный JS-файл.

Результат показан ниже:

hello.html ( всплывающая страница)

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p id="demo">=a</p>
<button type="button" id="do-count">Count</button>
<script src="popup.js"></script>
</body>
</html>

popup.js

var a=0;
function count() {
    a++;
    document.getElementById('demo').textContent = a;
}
document.getElementById('do-count').onclick = count;

Обратите внимание, что я заменил innerHTML на textContent. Научитесь использовать textContent вместо innerHTML, когда вы намерены изменить текст. В этом простом примере это не имеет значения, но в более сложных приложениях это может стать проблемой безопасности в виде XSS.

108
ответ дан Rob W 27 August 2018 в 18:10
поделиться

Измените свой onclick:

onclick="count"

Или измените функцию подсчета на что-то вроде этого:

function count()
{

    var demo = document.getElementById("demo");
    return function() {
        demo.innerHTML = ++a;
    }

}

Вот хорошая демонстрация, которую я собрал :

Код (предполагается, что вы добавили id="the_button" к своей кнопке):

window.onload = function () {
    var button = document.getElementById("the_button");
    button.onclick = count();

    function count() {
        var a = 0;
        var demo = document.getElementById("demo");
        return function () {
            demo.innerHTML = ++a;
        }
    }
}

Демонстрация: http://jsfiddle.net/maniator/ck5Yz/

0
ответ дан Neal 27 August 2018 в 18:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: