Расширение Google Chrome: передача переменной javascript в iframe src - PullRequest
0 голосов
/ 20 августа 2011

Я добавил «вкладки» в разрешения, но этот код не работает. Iframe работает, когда URL передается напрямую, но не из скрипта.

    <html> 
    <head> 
    </head>
    <body >
    <iframe src="www" id="link" width="400" height="300">
    <p>Your browser does not support iframes.</p>
    </iframe>
    <script>
    var url1="xxx";
    chrome.tabs.getSelected(null,function(tab) {
    var url1= tab.url;
    });
    document.getElementById("link").src=url1;
    </script>
    </body>
    </html>

1 Ответ

1 голос
/ 20 августа 2011

Дайте мне посмотреть, понимаю ли я вопрос.

Вам потребуется добавить в ваш манифест сценария контента разрешение на доступ к той странице, на которой есть iframe. После этого вы используете Сценарии содержимого и Передача сообщений для передачи данных в этот iframe.

В приведенном выше примере вам нужно внедрить скрипт содержимого, поэтому в вашем манифесте:

"content_scripts": [{
    "matches": ["https://www.my.injected.url/*"],
    "js": ["injected_script_that_has_the_iframe.js"],
    "run_at": "document_end",
    "all_frames": true
}]

Затем в этом скрипте контента вы можете сделать обычный JavaScript для установки URL:

document.getElementById("link").src= someURL;

Теперь, откуда этот URL? Это идет от вашего расширения? Если это так, используйте Message Passing, чтобы запросить это.

chrome.extension.sendRequest({method: "GetURL"}, function(response) {
  document.getElementById("link").src= response.url;
});

А на вашей фоновой странице вы слушаете запросы, приходящие с вашей фоновой страницы:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    if (request.method == "GetURL")
      sendResponse({url: "http://rim.com"});
    else
      sendResponse({}); // snub them.
});

Напомним, что ваш скрипт контента запрашивает ваше расширение (фоновую страницу), что такое URL, и как только он получает ответ, он обновляет iframe.

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