Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

JavaScript und DOM, Formular wird nicht angezeigt

Diskussion: JavaScript und DOM, Formular wird nicht angezeigt im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hi, ich schreib zur Zeit ein FireFox Plugin welches via JavaScript und DOM das Aussehen gewisser Webseiten abändert. Funktioniert ...

Antwort
Alt 05.09.07, 02:55   #1 (permalink)
 
Registriert seit: 20.03.07
System.I/O Leistung: Facit NTK
System.I/O eine Nachricht über ICQ schicken
Likes: 0
Unhappy JavaScript und DOM, Formular wird nicht angezeigt

Anzeige

Hi,

ich schreib zur Zeit ein FireFox Plugin welches via JavaScript und DOM das Aussehen gewisser Webseiten abändert.
Funktioniert soweit auch ganz gut,
bist auf die Darstellung der im nachhinein hinzugefügeten Formulare.
Alle anderen Elemente (zb. <h3>...) machen keine Probleme.

Komischerweise werden alle hinzugefügten Elemente im DOM Inspector vom FF angezeigt,
auch die Formulare die nicht dargestellt werden.
Die Fehler-Konsole meint auch das alles ok währe X(

Ich verstehe es einfach nicht, die Formulare werden einfach nicht angezeigt obwohl sie im DOM Baum vorhanden sind.


Hoffe einer hat änliche Erfahrungen gemacht und kann mir weiter helfen.

Hier noch der Code (ab Zeile 44):

Code   

Code:
// Bei jedem Seitenaufruf wird die Function "OnPageLoaded" aufgerufen.
window.addEventListener("load", OnPageLoaded, true);

// Prüft ob die Seite angepasst werden muss
function OnPageLoaded(){
	// Browser "Handle"
	var browser = getBrowser();  
	// Liste aller offenen Seiten (tabs,frames) 
	var documentList = GetDocuments(GetContentWindow());
	// Das erste Element der Liste ist die aktuelle Seite
	var pageDocument = documentList[0];
	
	// Wird bei alles Aufrufen der Domain/URL benötigt
	if (browser.contentDocument.location.href.search(/.?irgendeine.url.?/) != -1) {			
		// DOM Node der navigations Leiste
		var navi = pageDocument.getElementById("navi");
		// Alle einträge der navigations Leiste durchlaufen
		for (var i=0; i < navi.childNodes.length; i++) {
			// Das ist unser Link den wir manipulieren wollen
			if(navi.childNodes[i].innerHTML == '<a href="/_abc.php/cluster/start"><b>Cluster</b></a>') {
				// Link ersetzen
				navi.childNodes[i].innerHTML = '<a href="/_abc.php/cluster/start"><b>HIVE</b></a>';
				break;
			}
		}		
	} 
	
	// Wird nur bei der angegebenen URL benötigt
	if (browser.contentDocument.location.href.search(/http:\/\/irgendeine.url\/_abc.php\/cluster\/start/) != -1) {		
		// DOM Node des DIV Containers
		var clusterDiv = pageDocument.getElementById("cluster");
		// Überschrift ändern. ChildNodes[1] ist ein "<H2>..." Element 
		clusterDiv.childNodes[1].innerHTML = "HIVE";
		
		// Neue Sub Überschrift
		var h = document.createElement("h3");
		h.className = "cluster";
		// Text für die Sub Überschrift
		var hText = document.createTextNode("HIVE Search");
		h.appendChild(hText);
		// Überschrift zum DIV Container hinzufügen 
		clusterDiv.insertBefore(h, clusterDiv.childNodes[3]);
		
		// -->!! Hier liegt das problem, die form wird einfach nicht angezeigt. Die obere <H3> Überschrift wird allerdings angezeigt. !!<--
		// Formular erzeugen
		var form = document.createElement("form");
		form.className = "cluster";
		// Formular Attribute hinzufügen
		var formActionAtt = document.createAttribute("action");
		formActionAtt.nodeValue = "_self";
		form.setAttributeNode(formActionAtt);
		var formMethodAtt = document.createAttribute("method");
		formMethodAtt.nodeValue = "post";
		form.setAttributeNode(formMethodAtt);
		
		// <Input..> Element und Attribute hinzufügen
		var input = document.createElement("input");
		var inputAtt = document.createAttribute("type");
		inputAtt.nodeValue = "text";
		input.setAttributeNode(inputAtt);
		var inputAtt2 = document.createAttribute("value");
		inputAtt2.nodeValue = "test";
		input.setAttributeNode(inputAtt2);		
		
		// Input Element zum Formular hinzufügen
		form.appendChild(input);
		// Formular zum DIV Container hinzufügen (am index der clusterDiv.childNodes kann es nicht liegen, hab ich überprüft)
		clusterDiv.insertBefore(form, clusterDiv.childNodes[4]);
	}

	
}


// 
function GetDocuments(frame) {
    var documents = new Array();
  
    if(frame) {
        var frames = frame.frames;
        var framesLength = frames.length;
        
        if(frame.document) {
            documents.push(frame.document);
        }
        
        for(var i = 0; i < framesLength; i++) {
            documents = documents.concat(GetDocuments(frames[i]));
        }
    }

    return documents;
}

// 
function GetContentWindow() {
    return GetSelectedBrowser().contentWindow;
}

// 
function GetSelectedBrowser() {
    return window.top.getBrowser().selectedBrowser;
}

MfG
System.I/O ist offline   Mit Zitat antworten
Alt 14.09.07, 21:27   #2 (permalink)
 
Registriert seit: 14.09.07
Gran Gizmo Leistung: Facit NTK
Likes: 0
Standard RE: JavaScript und DOM, Formular wird nicht angezeigt

Hi,

ich habe vor einiger Zeit etwas Ähnliches versucht, eine kleine Extension für Firefox, mit der ich gewisse Elemente von bestimmten Webseiten verändern kann.
Leider habe ich damals keine Möglichkeit gefunden, meinen Code bei jedem Seitenaufruf automatisch ausführen zu lassen. Ich musste immer ein Overlay und ein grafisches Bedienelement verwenden. Das ist mir aber zu umständlich.

Deshalb würde mich interessieren, wie du deine Extension aufgebaut hast, damit die automatische Ausführung funktioniert.

Schönen Dank für deine Hilfe!

Gizmo
Gran Gizmo ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 15.09.07, 16:06   #3 (permalink)
Themenstarter
 
Registriert seit: 20.03.07
System.I/O Leistung: Facit NTK
System.I/O eine Nachricht über ICQ schicken
Likes: 0
Standard

hi,
ich hab mich da damals an nen Tutorial gehalten, aber ich finde es nimmer.
Kannst aber gerne meine files haben.
Leider is die Struktur dieser FF Plugins etwas verwirrend, musste dir ma angucken.
Interessant is die install.rdf und captain.js

Was das abarbeiten der aufgerufenen Seiten angeht, so habe ich einen EventHandle benutzt:
Code:
window.addEventListener("load", OnPageLoaded, true);
Wie zu sehen ist, wird die Funktion "OnPageLoaded" hier auf das "load" Event regestriert.
Der boolische Parameter gibt an, ob dieses Event nun jedesmal oder nur einmal verarbeitet wird.

Hoffe es hilft dir weiter, ansonsten einfach nochma fragen

PS: hab das file nun einfach von .xpi auf .zip geändert. sollte klappen, hoffe ich jedenfalls
Angehängte Dateien
Dateityp: zip htn_hive.zip (10,0 KB, 15x aufgerufen)
System.I/O ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » JavaScript und DOM, Formular wird nicht angezeigt
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
COM Port wird nicht angezeigt! enkore Die Problemzone 3 29.05.09 01:12
IIS 6.0 , PHP 4.4.4 - IP wird nicht angezeigt ba2 Internet Allgemein 2 27.10.06 22:25
FilesizeAngabe wird nicht angezeigt :( freakazoid (Web-) Design und webbasierte Sprachen 7 04.10.05 23:16
temp wird nicht angezeigt. xeenon Hardware Probleme 5 17.08.04 16:08
Partition wird nicht angezeigt dexyxp Hardware Probleme 4 21.08.03 15:07


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61