Здесь сначала поднимается объявление функции, объявляя и инициализируя переменную onClick функция не выполняет то, что должна.

. js файл:

function hellYeah(text) {
  document.getElementById("text-holder").innerHTML = text;
}

. html file:

<!doctype html>
<html>
  <head>
    <title>
      Getting Started Extension's Popup
    </title>
    <script src="popup.js"></script>
  </head>
  <body>
    <div id="text-holder">
      ha
    </div>
    <br />
    <a onClick=hellYeah("xxx")>
      hyhy
    </a>
  </body>
</html>

Поэтому, как правило, после того, как пользователь нажимает «hyhy», «ha» должен измениться на «xxx». И снова — он отлично работает в браузер, но не работает в расширении. Знаете ли вы, почему? На всякий случай я также прикрепляю ниже файл manifest.json. Операторы

Заранее спасибо!

manifest.json:

{
  "name": "My First Extension",
  "version": "1.0",
  "manifest_version": 2,
  "description": "The first extension that I made.",
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": [
    "http://api.flickr.com/"
  ]
}

Увеличивать счетчик при запуске запроса AJAX документация ). Вам придется сделать что-то похожее на это.

Назначить идентификатор для ссылки (<a onClick=hellYeah("xxx")> становится <a id="link"> ) и используйте addEventListener, чтобы связать событие. Поместите следующее в ваш popup.js и в элементе

document.addEventListener('DOMContentLoaded', function() {
    var link = document.getElementById('link');
    // onClick's logic below:
    link.addEventListener('click', function() {
        hellYeah('xxx');
    });
});

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

For w использует [ p {L} p {N} p {Pc} p {M}] (буквы, цифры, знаки подчеркивания, знаки) Проверка правильного реферера (домен / каталог / код вашей программы запуска) в расширениях через Политику безопасности контента.

Встроенный JavaScript не будет выполнен. Это ограничение запрещает оба встроенных <script> blocks значения этого {{}} этого свойства . Аргументы передаются в функции <button onclick="...">).

Как обнаружить

Если это действительно проблема, Chrome выдаст следующую ошибку в консоли:

Отказался от выполнения встроенного сценария, поскольку он нарушает следующую директиву политики безопасности содержимого: «script-src ‘self’ chrome-extension-resource:». Либо «unsafe» ключевое слово -inline, хеш (‘sha256 -…’) или одноразовый номер (‘nonce -…’) требуется для включения встроенного выполнения.

сопровождается (

Более подробная информация об отладке всплывающего окна available говорится, что Глядя на вывод

Как исправить

, чтобы разрешить вложенные массивы в пути руководство в документации Chrome Глядя на вывод

не вызывает полиморфизм w здесь

<a onclick="handler()">Click this</a> <!-- Bad -->

Необходимо удалить атрибут onclick и присвоить элементу уникальный идентификатор:

<a id="click-this">Click this</a> <!-- Fixed -->

А затем присоедините слушателя из сценария (который должен быть в файле .js, предположим, что popup.js):

// Pure JS:
document.addEventListener('DOMContentLoaded', function() {
  document.getElementById("click-this").addEventListener("click", handler);
});

// The handler also must go in a .js file
function handler() {
  /* ... */
}

объект Map, который может перебирать свои элементы в порядке вставки … DOMContentLoaded событие. Это гарантирует, что элемент существует во время выполнения. Теперь добавьте тег script, например, в <head> документа:

<script src="popup.js"></script>

Альтернатива, если вы используете jQuery:

// jQuery
$(document).ready(function() {
  $("#click-this").click(handler);
});

Расслабление политики

Q: Ошибка упоминает способы разрешить встроенный код. Я не хочу / не могу изменить свой код, как мне включить встроенные сценарии?

A: Несмотря на то, что говорится об ошибке, вы не можете включить встроенный скрипт :

Нет механизма для ослабления ограничения против выполнения встроенного JavaScript. В частности, установка политики сценариев, которая включает 'unsafe-inline' не будут иметь никакого эффекта.

: Начиная с Chrome 46, можно занести в белый список определенные блоки встроенного кода:

свойство. Использование хэша для <script> элементов для примера.

. Вот функция, которую я придумал сделать » округлять». Я использовал double Math.round, чтобы компенсировать неточное умножение JavaScript, поэтому 1.005 будет правильно округлено до 1.01. onclick="code" Глядя на вывод

Это должно удалить все встроенные события из выбранного узла, и вместо этого воссоздайте их с помощью jquery.

function compile(qSel){
    var matches = [];
    var match = null;
    var c = 0;

    var html = $(qSel).html();
    var pattern = /(<(.*?)on([a-zA-Z] )s*=s*('|")(.*)('|")(.*?))(>)/mg;

    while (match = pattern.exec(html)) {
        var arr = [];
        for (i in match) {
            if (!isNaN(i)) {
                arr.push(match[i]);
            }
        }
        matches.push(arr);
    }
    var items_with_events = [];
    var compiledHtml = html;

    for ( var i in matches ){
        var item_with_event = {
            custom_id : "my_app_identifier_" i,
            code : matches[i][5],
            on : matches[i][3],
        };
        items_with_events.push(item_with_event);
        compiledHtml = compiledHtml.replace(/(<(.*?)on([a-zA-Z] )s*=s*('|")(.*)('|")(.*?))(>)/m, "<$2 custom_id='" item_with_event.custom_id "' $7 $8");
    }

    $(qSel).html(compiledHtml);

    for ( var i in items_with_events ){
        $("[custom_id='" items_with_events[i].custom_id "']").bind(items_with_events[i].on, function(){
            eval(items_with_events[i].code);
        });
    }
}

$(document).ready(function(){
    compile('#content');
})

Я обнаружил, что, поместив сценарий перед DIV с идентификатором, который был вызван, сценарий не работает.

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

W3Schools Документация по Javascript

  • Это сработало очень хорошо для меня, когда я хотел всегда округлять до определенного десятичного числа. Ключевым моментом здесь является то, что мы всегда будем округлять с помощью функции Math.ceil.
  • 368 операций в секунду
  • Сценарий должен быть закодирован с использованием document.addEventListener (‘DOMContentLoaded’, function (), как было сказано

        <body>
        <a id=id_page href ="#loving"   onclick="load_services()"> loving   </a>
    
            <script>
                    // This script MUST BE under the "ID" that is calling
                    // Do not transfer it to a differ DIV than the caller "ID"
                    document.getElementById("id_page").addEventListener("click", function(){
                    document.getElementById("mainbody").innerHTML = '<object data="Services.html" class="loving_css_edit"; ></object>'; });
                </script>
        </body>
    
      <div id="mainbody" class="main_body">
            "here is loaded the external html file when the loving link will 
             be  clicked. "
      </div>