Можно ли запустить два сценария содержимого на двух отдельных страницах?

Скажем, у меня есть два сценария контента, codeA.js и codeB.js. Мне интересно, возможно ли запустить codeA.js на http://www.example.com и запустить codeB.js на http://www.domain.com.

Можно ли установить мой content_scripts в файле manifest.json на:

"content_scripts": [
    {
        "matches": ["http://www.example.com", "http:www.domain.com"],
        "js": ["codeA.js", "codeB.js"]
    }
]

а затем каждый скрипт проверяет, на каком URL-адресе находится страница в данный момент? Если да, то как мне это сделать?

ОБНОВЛЕНИЕ:
я попытался использовать следующий код

if(document.location == "http://*.google.com/*" || "https://*.google.com/*") {
    alert("you are using google");
} else if(document.location == "http://*.yahoo.com/*" || "https://*.yahoo.com") {
    alert("you are using yahoo!");
}

но я продолжал получать you are using google.


person null    schedule 03.09.2014    source источник
comment
Проверьте это stackoverflow.com/questions /14807832/ для соответствия домену, ваш код не работает.   -  person Exception    schedule 03.09.2014


Ответы (2)


Обратите внимание, что content_scripts — это массив:

"content_scripts": [
    {
        "matches": ["http://www.example.com/*"],
        "js": ["codeA.js"]
    },
    {
        "matches": ["http://www.domain.com/*"],
        "js": ["codeB.js"]
    }
]
person rsanchez    schedule 03.09.2014
comment
из манифеста версии2? - person Exception; 03.09.2014
comment
Спасибо, это работает. Я не понял, что content_scripts был массивом. Я бы хотел, чтобы это было ясно указано в документации content_scripts. - person null; 04.09.2014

Создайте один файл сценария и проверьте доменное имя, как показано ниже.

if(document.location == domain1){
  // load script file for domain1
} else {
  // load script for other domains
}

Насколько я знаю, вы не можете указывать разные файлы сценариев содержимого для разных доменов в файле manifest.json.

Согласно редактированию вашего метода, этот код не работает. Вы должны проверить это, используя регулярное выражение, а не только ==, так как ваш домен содержит * между ними. И предварительно напишите сценарий Web Accessible Resources.

person Exception    schedule 03.09.2014
comment
Привет, спасибо за быстрый ответ. К сожалению, я попробовал ваш код, и он не работает (см. обновленный вопрос). Есть идеи, что пошло не так? - person null; 03.09.2014
comment
Файлы @Kootling Script, которые вы пытаетесь загрузить, должны быть заранее упомянуты в доступных веб-ресурсах. Вы сделали это? Проверьте этот developer.chrome.com/extensions/manifest/. - person Exception; 03.09.2014
comment
На самом деле, на этой странице указано: Content scripts themselves do not need to be whitelisted. Поэтому я не думаю, что проблема заключается в добавлении скрипта контента в белый список. - person null; 03.09.2014
comment
@Kootling Хорошо, но вы разместили регулярное выражение для соответствия домену? - person Exception; 03.09.2014