Я хочу, чтобы действие моей страницы активировалось для всех исходящих ссылок с определенной страницы. Как я могу это сделать? Я просмотрел документы безрезультатно. Любые указатели будут оценены!
Расширения браузера Chrome: как активировать действие страницы для всех исходящих ссылок определенной страницы?
Ответы (2)
- API Google Chrome не имеет такого API, но необходимые вам функции могут быть реализованы с использованием стандартного API расширений Google Chrome.
- Вам необходимо реализовать скрипт содержимого.
- Ваш сценарий контента должен изменить DOM страницы, которую вы хотите обработать, и переопределить все исходящие ссылки с помощью вашего собственного javascript, который будет выполнять некоторые действия и открывать ссылку по клику.
Чтобы изменить ссылку href, вы можете сделать что-то вроде этого:
function processLink(element, newHref) {
var a = document.createElement("a");
a.href = newHref;
a.textContent = element.textContent;
a.title = element.title;
element.parentNode.replaceChild(a, element);
}
ОБНОВЛЕНИЕ 1.
Вместо newHref вы можете создать что-то вроде
a.href = "javascript:processOutgoingLinkClick('" + element.href + "')"
Функция processOutgoingLinkClick
должна содержать фактическую обработку клика.
person
uthark
schedule
20.03.2010
Я думал о чем-то подобном на самом деле. Но как ссылка будет сигнализировать новой вкладке о том, что она должна активировать действие страницы?
- person int3; 20.03.2010
вы можете добавить функцию
processOutgoingLinkClick()
и отобразить a.href = javascript:processOutgoingLinkClick(' + element.href + ') Функция processOutgoingLinkClick
должна содержать фактическую обработку.
- person uthark; 20.03.2010
а теперь понял. Однако... смогу ли я определить, хотел ли пользователь открыть вкладку на той же странице, в новой вкладке или в новом окне? Тем не менее, это будет незначительная проблема. Спасибо!
- person int3; 20.03.2010
Хм, по крайней мере, у вас есть целевой атрибут исходной ссылки, но я не уверен, что этого достаточно.
- person uthark; 20.03.2010
Любопытно, почему вы не используете события вкладки Chrome Extensions, которые вы может прослушивать onUpdated onCreated. Когда пользователь щелкает ссылку на странице, он переходит и запускает событие в onUpdated.
Итак, в вашем background.html вы можете сделать:
chrome.tabs.onUpdated.addListener(function(tabId, info) {
if (info.status === 'loading')
console.log('Loading url ... ' + info.url)
});
То же самое для onCreated. Затем, пока он загружается, вы можете решить, что делать с вашим pageAction.
person
Mohamed Mansour
schedule
20.03.2010