Ich versuche eine einfache Firefox-Erweiterung für duolingo.com zu erstellen, so dass ich die Gesamtzahl der Wörter sehen kann, die ich für eine Sprache abgeschlossen habe. Die Liste der Wörter, die eine Person vervollständigt, wird unter https://www.duolingo.com/words angezeigt. Die Wörter befinden sich in einer HTML-Tabelle mit dem Klassennamen 'vocab-list'. Jede Zeile in dieser Tabelle enthält ein neues Wort. Ich versuche also, alle Zeilen in dieser Tabelle zu zählen.Verwendung von document.getElementById ("Tabellenname"). Rows.length; in einer Firefox Addon SDK Erweiterung
Ich habe einige Tutorials zum Erstellen von Firefox-Erweiterungen angeschaut, aber ich kann nicht genau verstehen, wie JavaScript-Code verwendet werden kann, um das DOM zu manipulieren. Ich möchte in dem index.js, so etwas tun, aber es funktioniert nicht:
var buttons = require('sdk/ui/button/action');
var tabs = require("sdk/tabs");
const {Cc, Ci} = require("chrome");
var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"].getService(Ci.nsIPromptService);
var button = buttons.ActionButton({
id: "mozilla-link",
label: "Visit Mozilla",
icon: {
"16": "./icon-16.png",
"32": "./icon-32.png",
"64": "./icon-64.png"
},
onClick: handleClick
});
function handleClick(state) {
tabs.open("https://www.duolingo.com/words");
var wordCount = document.getElementById("vocab-list").rows.length;
var msg = "Total number of words completed:" + wordCount;
prompts.alert(null, "Duolingo Word Counter Extension", msg);
}
Dies ist der Fehler, die ich bekomme:
JPM [info] Starting jpm run on Duolingo Word Counter
JPM [info] Creating a new profile
console.error: duolingo-addon:
JPM [error] Message: ReferenceError: document is not defined
Stack:
[email protected]://gre/modules/commonjs/toolkit/loader.js -> resource://duolingo-addon/index.js:36:5
Ich bin zu verstehen, nicht in der Lage, warum ich kann‘ t verwende JavaScript direkt und warum muss es innerhalb einer Variablen definiert werden. Danke für jede Hilfe.
UPDATE - HIER IST DER AKTUALISIERTE CODE AUF DEN KOMMENTAR
var buttons = require('sdk/ui/button/action');
var tabs = require("sdk/tabs");
var pageMod = require("sdk/page-mod");
var data = require("sdk/self").data;
var button = buttons.ActionButton({
id: "mozilla-link",
label: "Visit Mozilla",
icon: {
"16": "./icon-16.png",
"32": "./icon-32.png",
"64": "./icon-64.png"
},
onClick: handleClick
});
function handleClick(state) {
pageMod.PageMod({
include: "*.duolingo.com",
contentScriptFile: data.url("myScript.js"),
contentScriptWhen: "ready",
attachTo: ["existing", "top"]
});
}
BASED Und die MyScript.js Datei:
var wordCount = document.getElementById("word-count").innerHTML;
window.alert("Total number of words completed: " + wordCount);
Wenn ich auf dem firefox Registerkarte jetzt, der Code ausgeführt werden und zeigt ein Popup mit der Gesamtzahl der Wörter an.
Vielen Dank für Ihre Antwort. Ich habe einen Teil deines Codes benutzt und jetzt habe ich etwas, das genau das tut, was ich tun wollte. Ich habe meinen ursprünglichen Beitrag aktualisiert, um das zu zeigen. – vjks
@ user3530588 Beachten Sie, dass das Registrieren eines Page-Mods etwas weniger effektiv ist als das Ausführen des Skripts nur in den geöffneten Tabs. – Nickolay