Я работаю над расширением Chrome просто для забавы и пытаюсь выучить немного больше JavaScript, чтобы добавить кнопку +1 к сообщениям в Живой ленте Google.
Мне кажется, что я сталкиваюсь с ошибкой «Небезопасная попытка JavaScript получить доступ к фрейму с URL» / проблема с несколькими доменами Это согласно моему журналу консоли chrome.
Мой код выглядит следующим образом:
function addGJS() {
var po = document.createElement('script'); po.type = 'text/javascript';
po.src = 'https://apis.google.com/js/plusone.js';
po.innerHTML = '{"parsetags": "explicit"}';
jQuery(po).load (function() {
var items;
var startInt = setInterval(function() {
items = $("#canvas_frame").contents().find('.nH.h7.HY.aW');
if (items.length > 0) { clearInterval(startInt); main(items); }
}, 1000);
});
var insert;
var poInt = setInterval(function() {
insert = document.getElementById("canvas_frame");
if (insert != null) { insert.contentDocument.body.appendChild(po); clearInterval(poInt) }
}, 1000);
}
Основное содержание гугл гугла появляется в iframe "canvas_frame", поэтому я попытался добавить к нему плюс-один. У меня был хороший поиск и я не могу найти окончательных ответов. Я попытался изменить тип iframe на содержание. Я также читал о postMessage, но не уверен, возможно ли это в этом контексте?
или я просто облажался? :)
Приветствия
UPDATE:
manifest.json (описание и значки, которые я вынул):
"content_scripts": [
{
"js": [ "scripts/jquery.js", "scripts/plusone.js", "user_scripts/buzzplusone.js" ],
"matches": [ "*://*.google.com/*/#buzz", "*://google.com/*/#buzz", "https://mail.google.com/*" ],
"run_at": "document_end"
}],
"permissions": [ "https://mail.google.com/*", "https://plus.google.com/*" ],
Также наблюдаются следующие ошибки console.log:
Uncaught CustomError: Ошибка в защищенной функции: SYNTAX_ERR: DOM Exception 12
googleapis.client__plusone.js: 27
Uncaught TypeError: Невозможно прочитать свойство 'src' с нулевым значением
Небезопасная попытка JavaScript получить доступ к фрейму с URL
https://mail.google.com/mail/#buzz из фрейма с URL /apps-static//js/nw/nw_i/rt=h/ver=H-Y4RtFct_c.en./am=!oHhtMCRDHb3v-YjahgnJviPf2CNHgPs1tsZl/d=1/">https://plus.google.com//apps-static//js/nw/nw_i/rt=h/ver=H-Y4RtFct_c.en./am=!oHhtMCRDHb3v-YjahgnJviPf2CNHgPs1tsZl/d=1/. Домены, протоколы и порты должны совпадать