Использование удаленного JavaScript в расширениях Chrome - PullRequest
1 голос
/ 23 июля 2010

Есть ли способ получить удаленный JS-файл с расширением chrome?

Мой manifest.json выглядит так:

{
    "name": "My Extension",
    "version": "0.1",
    "content_scripts": [
    {
        "matches": ["http://*/*"],
        "js": ["jquery.js", "main.js"],
        "run_at": "document_end",
        "all_frames": true
    }
    ]
}

Я хочу использовать один JavaScript API, который ограничен использованием в выбранном домене, поэтому я не могу просто вставить его в загруженную страницу в Chrome, например:

$('head').append('<script src="http://example.com/myApi.js?key=%key%"></script>');

потому что JS API предупредил меня, что я использую его в URL, который я им не дал.

Я хочу просто использовать некоторые функции из этого удаленного JS. К счастью, ключ API можно зарегистрировать и использовать на локальном хосте.

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

У меня есть идея создать "виртуальный DOM" , но, возможно, это не решение, потому что код JS API не может быть выполнен.

Куда вставить код? Некоторая фоновая страница ??

Ответы [ 3 ]

3 голосов
/ 25 октября 2010

Вы пробовали:

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://example.com/myApi.js?key=%key%';
document.getElementsByTagName('head')[0].appendChild(script); 

Я использую его в своем расширении Google Chrome и прекрасно работает.

0 голосов
/ 02 июня 2011

В настоящее время не удается найти способ удаленного размещения кода для расширения, но все же разрешить этому коду использовать вызовы chrome. * Javascript.

0 голосов
/ 25 октября 2010

Попробуйте этот скрипт:

if(window.top == window && !document.getElementById('molseek'))
{
    if (document && document.doctype && document.doctype.name && document.doctype.name.toLowerCase() == 'html') {
        loadToolTip();
    }
    // Weird guest... but if we got an head element, try to validate even if no doctype...
    else if (document && document.getElementsByTagName('head').length) {
        loadToolTip();
    }
    // Weird guest #2... but if we got title element, try to validate even if no doctype nor head...
    else if (document && document.getElementsByTagName('title').length) {
        loadToolTip();
    }
}

function loadToolTip(){

    (function(s){
        if(!window.molseek){
            s.src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js';
            (document.getElementsByTagName("head").item(0)||document.body).appendChild(s)
        }
    })(document.createElement('script'));
    (function(s){
        if(!window.apture){
            s.src='https://location';
            (document.getElementsByTagName("head").item(0)||document.body).appendChild(s)
        }
    })(document.createElement('script'));

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