document.write в расширении Chrome - PullRequest
2 голосов
/ 14 января 2012

Я новичок в этом, поэтому, пожалуйста, потерпите меня.Я пытаюсь написать расширение для Chrome, которое выполняет следующие действия:

  1. Detect www.website.com/anypage.html.Если этот веб-сайт обнаружен, выполните следующие действия.
  2. Не загружайте URL.
  3. Вместо этого напишите пустой документ с гиперссылкой на www.website.com/anypage.html?ie=UTF8

Сценарий настроен на запуск при запуске документа (вманифест).

Вот мой код:

Определить URL:

var regExp = /website.com/gi;
var match = 0;
testString = window.location.href.toString();
if(regExp.test(testString) { 
match = 1;

Создать пустой документ со ссылкой на URL с тегом кодировки UTF8:

document.write("<a href=" + window.location.href + "?ie=UTF8>Title of Link</a>");

Это не работает, как ожидалось, а просто показывает пустую страницу.У кого-нибудь есть идеи?

Спасибо!


РЕДАКТИРОВАТЬ: Вот полный код:

checklink(); // If there is a match, then checklink will return a 1. If it's already     tagged, it will return a 5.
var matchLink = null;
if (checklink() === 1) {
matchLink = window.location.href.toString();

if (checklink() != 1) {
matchLink = null;

function checklink() { //checks to see if the current URL matches website.com
var regExp = /website.com/gi,
testString = window.location.href.toString(),
match = 0,
tagged = 0;

if (regExp.test(testString)) { //if there is a match, returns 1
match = 1;


var regExp2 = /UTF8/gi;
if (regExp2.test(testString)) { //if UTF8 is found, then it returns 5
tagged = 5;

return(match + tagged);


function tagUTF() {
if (matchLink) {
var newLink = matchLink + "?ie=UTF8";
document.write("<a href=\"" + newLink + "\">Link</a>");


if (matchLink) {
tagUTF();
}

1 Ответ

1 голос
/ 14 января 2012

Сценарий содержимого Chrome имеет доступ к DOM, поэтому вы можете просто заменить содержимое элемента body текущей страницы новым узлом, содержащим ваш тег привязки, либо с помощью методов манипуляции dom, либо innerHTML:

document.body.innerHTML = "<a href=" + window.location.href + "?ie=UTF8>Title of Link</a>";

Обратите внимание, это предполагает, что JavaScript, который выполняет манипулирование DOM, был правильно добавлен для вашего расширения Chrome в качестве «скрипта содержимого»:

http://code.google.com/chrome/extensions/content_scripts.html

РЕДАКТИРОВАТЬ:

Вот код, который я использовал, чтобы он работал для меня локально:

manifest.json

{
  "name": "Test",
  "version": "1.0",
  "description": "Test",
  "permissions": [
    "<all_urls>"
  ],
  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["content-script.js"],
      "run_at": "document_end"
    }
  ]
}

content-script.js

document.body.innerHTML = "<a href='test'>test</a>";
...