Dienstag, 7. September 2010, 14:04 UTC+1

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

Gastbenutzer

unregistriert

1

Samstag, 17. Juli 2010, 14:07

div mit greasemonkey ausblenden wenn er keinen inhalt hat

Hi
ich habe ein Problem
ich versuche mit greasemonkey ein tool zu machen das einen Div(id:#Grid-Page-Center-Header-Menu) ausblenden soll wenn er keinen inhalt hat/leerzeichen als inhalt
weil in einem style beim start der div in dem sonst das mit dem plauderkasten steht(... sind online)und so (durch eine bestimmte art von border)
nun möchte ich das mit greasemonkey so hinbekommen das er ausgeblendet wird wenn er keinen inhalt hat
ich habe schon eine art code(teilweise aus codeschnipseln von anderen seiten):

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// ==UserScript==
// @name       	Project Noctu(leer???)
// @namespace  	tt
// @description	t
// @include    	http://www.schuelervz.net/
// ==/UserScript==

document.getElementById("Grid-Page-Center-Header-Menu").style.visibility = "visible";
checkIboxContent = function() {
  var e = document.getElementById("Grid-Page-Center-Header-Menu");

  if (e.innerHTML.length = " ") {
		document.getElementById("Grid-Page-Center-Header-Menu").style.visibility = "hidden";
  } else {
	document.getElementById("Grid-Page-Center-Header-Menu").style.visibility = "visible";
  }
}

ich hoffe ihr könnt mir helfen, denn der code funktioniert nicht so ganz(bin ein neuling in javascript und greasemonkey möchte aber den style verbessern(wenn es möglich ist den div auf bestimmten seiten(aber nur auf denen)auszublenden(mit css) wäre es auch nicht schlecht denn dann müsste ich mich nicht mit greasemonkey herumschlagen )

KaWie

Unser Speedy Gonsales

Beiträge: 5 024

Wohnort: twitter.com/KaWie

2

Samstag, 17. Juli 2010, 14:54

= ist für zuweisungen, == für vergleiche.

Und müsste e.innerHTML.length nich 1 sein, wenn ein Leerzeichen drin steht?

Zitat

weil in einem style beim start der div in dem sonst das mit dem plauderkasten steht(... sind online)und so (durch eine bestimmte art von border)


Das versteh ich jetzt nicht so ganz...
SELECT * FROM user WHERE IQ > 60;
twitter ~ schülerVZ ~ ICQ: 449923236 ~ kai@svz.li ~ Kurzurlaub? - deinname.svz.li - Mal mal was!

Gastbenutzer

unregistriert

3

Samstag, 17. Juli 2010, 18:34

wie schon gesagt:
ich habe es aus codeschnipseln und bin noch nicht so bewandert zum thema javascript/greasemonkey
der code stammt aus einem script in dem geprüft wird ob der div leer ist(nicht ob ein leerzeichen drin ist)
soll ich also == schreiben oder doch weiterhin = ????

Zitat


Zitat


Zitat

weil in einem style beim start der div in dem sonst das mit dem plauderkasten steht(... sind online)und so (durch eine bestimmte art von border)

Das versteh ich jetzt nicht so ganz...
also das was ich meinte war: dass der div in dem sonst das mit plauderkasten steht(z.B. 9 Freunde sind online) beim start zu sehen ist(auf der startseite(wenn man noch nicht angemeldet ist)),weil (normalerweise ist dort nur ne leertaste beim start in dem div) um den div ein border, usw. ist, ist er nunmal zu sehen und ich möchte das er wenn er nur ein leerzeichen enthält nicht zu sehen ist(ob nun durch display:none oder visibility:hidden, je nachdem wie es besser klappt)

wenn der code nun durch deine hilfe funktioniert melde ich mich wieder
erstmal danke für deine schnelle antwort kawie

Endlevel

Ich habe schon wieder einen neuen Titel

Beiträge: 3 047

4

Samstag, 17. Juli 2010, 19:29

is das nich i-wie mit css zu lösen mit ::empty oder so? ich kenn mich damit nich so aus :D

Gastbenutzer

unregistriert

5

Samstag, 17. Juli 2010, 20:41

ach ja und außerdem war der wert:
e.innerHTML.length ursprünglich 0
und im internet habe ich gelesen dass ein leerzeichen bei schriftlichen ausgaben häufig so verwendet wird: " "
z.B. " " + dein Text
und das dann z.B. in einem alert oder so
so ich habe es jetzt einmal verbessert versucht:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// ==UserScript==
// @name       	Project Noctu(leer???)
// @namespace  	tt
// @description	t
// @include    	http://www.schuelervz.net/
// ==/UserScript==

document.getElementById("Grid-Page-Center-Header-Menu").style.display =  "inline";
checkIboxContent = function() {
  var e = document.getElementById("Grid-Page-Center-Header-Menu");

  if (e.innerHTML.length == 1) {
		document.getElementById("Grid-Page-Center-Header-Menu").style.display = "none";
  } else {
	document.getElementById("Grid-Page-Center-Header-Menu").style.display = "inline";
  }
}

also wie oben einmal mit display
und einmal mit visibility
und trotzdem funktioniert es nicht muss ich bei den einen zwei werten etwa etwas anderes als inline angeben
muss ich am anfang überhaupt so etwas wie:

Quellcode

1
document.getElementById("Grid-Page-Center-Header-Menu").style.display =  "inline";

schreiben???
hoffe gespannt auf antworten
PS:(ich bearbeite für mich den Project Noctu style(den ich finde ihn super)):

Gastbenutzer

unregistriert

6

Samstag, 17. Juli 2010, 20:43

außerdem soll das ja nur auf den seiten(startseite und logout und allen anderen seiten) so sein, dass er (der div) nicht zu sehen ist

Hofferic

Unser CSO

Beiträge: 5 508

Wohnort: Wesel

Beruf: Schüler

7

Sonntag, 18. Juli 2010, 02:52

Was genau versuchst du zu erreichen?

Für ein simples Ausblenden reicht einfaches CSS, für ausblenden bei bestimmtem Inhalt kannst du JS mit if-statements nehmen, für leere Elemente den CSS ::empty-pseudoselektor ;)

Und

PHP-Quelltext

1
document.getElementById("Grid-Page-Center-Header-Menu").style.display =  "inline";

Ist aufgrund des HTML bereits inhärent also absolut unnötig, egal wann das Element genau ausgeblendet werden soll ^^

Wir sind nicht das Vz!

KaWie

Unser Speedy Gonsales

Beiträge: 5 024

Wohnort: twitter.com/KaWie

8

Sonntag, 18. Juli 2010, 09:32

visibility:hidden; lässt den Platz frei, den das DIV normalerweise bräuchte, Display:None; lässt es komplett verschwinden.
SELECT * FROM user WHERE IQ > 60;
twitter ~ schülerVZ ~ ICQ: 449923236 ~ kai@svz.li ~ Kurzurlaub? - deinname.svz.li - Mal mal was!

Endlevel

Ich habe schon wieder einen neuen Titel

Beiträge: 3 047

9

Sonntag, 18. Juli 2010, 14:03

ja aber wie funzt das mit dem ::empty? Eric sach mal an :D

Gastbenutzer

unregistriert

10

Sonntag, 18. Juli 2010, 14:25

Also ich versuche einen div anhand seiner id: #Grid-Page-Center-Header-Menu
auszublenden, wenn er als inhalt nur ein leerzeichen hat
nicht mehr und nicht weniger
wenn dies mit css funktioniert: super
ansonsten helft mir bitte das tool zu programmieren, da es im jetzigen zustand noch nicht funktioniert

MFG

KaWie

Unser Speedy Gonsales

Beiträge: 5 024

Wohnort: twitter.com/KaWie

11

Sonntag, 18. Juli 2010, 20:20

Zum Beispiel:
div:empty {
display:none;
}

Das Problem ist, dass das nicht funktioniert, weil ein Leerzeichen Inhalt ist und nicht :empty.
SELECT * FROM user WHERE IQ > 60;
twitter ~ schülerVZ ~ ICQ: 449923236 ~ kai@svz.li ~ Kurzurlaub? - deinname.svz.li - Mal mal was!

Hofferic

Unser CSO

Beiträge: 5 508

Wohnort: Wesel

Beruf: Schüler

12

Sonntag, 18. Juli 2010, 21:07

eigentlich reicht es ne regex zu testen...

Quellcode

1
2
3
if( !/\S+/.test( document.GetElementById("#Grid-Page-Center-Header-Menu").innerHTML ) ){ //Besagtes innerHTML enthält keinen non-whitespace-character (siehe !)
       document.GetElementById("#Grid-Page-Center-Header-Menu").style.display="none";
}

Wir sind nicht das Vz!

Gastbenutzer

unregistriert

13

Montag, 19. Juli 2010, 19:59

thx für die antworten
sry ich habe mich vertan in firebug stand nur ein Leerzeichen
im Mozilla original Quelltext stand eine komplette neue Zeile und über 10 Leerzeichen zwischen den beiden divteilen
so ungefähr(in der art):
<div...>
</div>
kann man auch festlegen, dass er wenn in ihm keine text/zeichen/Zahlen oder so stehen ausgeblendet wird
(wenn das noch nicht durch Hofferics code festgelegt wird)

Hofferic

Unser CSO

Beiträge: 5 508

Wohnort: Wesel

Beruf: Schüler

14

Montag, 19. Juli 2010, 21:16

In der theorie sollte \S* auf nichts, leerzeichen, cr, lf, break und tabulatoren reagieren. mit der negation sind also alle whitespace-sachen gedeckt ;)

Wir sind nicht das Vz!

Gastbenutzer

unregistriert

15

Mittwoch, 21. Juli 2010, 12:07

und trotzdem funktioniert es leider nicht
nur ich weiß nicht warum
vielleicht liegt es daran, dass stylish die Regeln überlagert oder so, weil in stylish (im Project Noctu Style) vielleicht festgelegt wird, dass es immer zu sehen sein soll
zumindest habe ich nachgesehen und festgestellt das auf der original schülervz der div auf der startseite eigentlich schon ausgeblendet ist und nur mit dem style zu sehen ist

hoffe auf schnelle antworten

MFG

Hofferic

Unser CSO

Beiträge: 5 508

Wohnort: Wesel

Beruf: Schüler

16

Mittwoch, 21. Juli 2010, 12:08

Dann muss Endlevel mal gucken was sache ist ^^

Wir sind nicht das Vz!

Endlevel

Ich habe schon wieder einen neuen Titel

Beiträge: 3 047

17

Mittwoch, 21. Juli 2010, 12:57

PHP-Quelltext

1
2
3
4
5
6
7
8
9
#Grid-Page-Center-Header-Menu  {
-moz-border-bottom-colors:#35617C #001F34 !important;
-moz-border-left-colors:#35617C #001F34 !important;
-moz-border-radius:4px 4px 4px 4px !important;
-moz-border-right-colors:#35617C #001F34 !important;
-moz-border-top-colors:#35617C #001F34 !important;
background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAZCAYAAADwkER/AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjM2qefiJQAAABBJREFUGFdj+PfvnyTDABEA5o5M3KZsN9QAAAAASUVORK5CYII="repeat-x scroll 0 -15px #082A43 !important;
border:2px solid transparent !important;
height:17px !important;



nope :D

Gastbenutzer

unregistriert

18

Sonntag, 25. Juli 2010, 20:30

also: habt ihr ne idee warum das ausblende-script nicht funktioniert???

Dj Fex

Schüler

Beiträge: 91

19

Sonntag, 15. August 2010, 10:29

habe mich mitlerweile angemeldet
so:
könnte es sein, das ich beim namensraum oder so was falsch gemacht habe???:

Quellcode

1
2
3
4
5
6
7
8
9
10
// ==UserScript==
// @name       	Project Noctu(leer???)
// @namespace  	tt
// @description	ttt
// @include    	*schuelervz.net*
// ==/UserScript==

if( !/\S+/.test( document.GetElementById("#Grid-Page-Center-Header-Menu").innerHTML ) ){ //Besagtes innerHTML enthält keinen non-whitespace-character (siehe !)
   	document.GetElementById("#Grid-Page-Center-Header-Menu").style.display="none"; 
}


MFG