Вызов функции Javascript для Chrome Extension Fail [duplicate]

Вам действительно нужно сделать это из папки src. Там вы вводите следующую командную строку:

[name of the package].[Class Name] [arguments]

Допустим, ваш класс называется CommandLine.class, и код выглядит следующим образом:

package com.tutorialspoint.java;

    /**
     * Created by mda21185 on 15-6-2016.
     */

    public class CommandLine {
        public static void main(String args[]){
            for(int i=0; i<args.length; i++){
                System.out.println("args[" + i + "]: " + args[i]);
            }
        }
    }

Затем вы должны cd в папку src и команда, которую вам нужно запустить, будет выглядеть так:

java com.tutorialspoint.java.CommandLine this is a command line 200 -100

И вывод в командной строке будет:

args[0]: this
args[1]: is
args[2]: a
args[3]: command
args[4]: line
args[5]: 200
args[6]: -100
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.

109
ответ дан Rob W 1 September 2018 в 10:22
поделиться

Измените свой 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 1 September 2018 в 10:22
поделиться
Другие вопросы по тегам:

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