webForumDet fria alternativet

Vad är fel?

6 svar · 311 visningar · startad av daPhil

daPhilMedlem sedan apr. 2001151 inlägg
#1

Jag är knappast någon kung på JS, jag var därför väldigt nöjd när jag lyckades knåpa ihop det här scriptet som funkar perfekt i IE och Safari. Däremot vill inte Firefox lira som jag vill, är inte det skumt när det e samma motor som Safari? Hur som helst, här e scriptet, hojta om ni ser något fel, tack.

function setCursorAtPos(field,pos){
	   pos=(pos)?Math.min(pos,field.value.length):field.value.length;
	   field.focus();
	   if(document.all){
	      var tr=field.createTextRange();
	      tr.moveStart('character',pos);
	      tr.select();
	   }
	}
	
	function doQuote(messid) {
		document.replyform.replyfield.value = "[ quote]"+ document.getElementById('text'+[messid]).innerText +"[ /quote]"+ '\n\n';
		document.replyform.replyfield.focus();
		setCursorAtPos(document.replyform.replyfield);
		window.scrollTo( 0, 400000 );
	}

OBS! Jag gjorde ett extra mellanslag i QUOTE -taggarna eftersom annars replacas de av Webforums kod.

@ndersMedlem sedan juni 200032 969 inlägg
#2
  1. Skriv ordentliga rubriker.
  2. Använd javascript-debuggern i Firefox (skriv javascript: (utan mellanslag) i adressraden)
daPhilMedlem sedan apr. 2001151 inlägg
#3

Vad är en 'ordentlig' rubrik?

@ndersMedlem sedan juni 200032 969 inlägg
#4

Typ: "Markörflyttning fungerar i IE men inte i Firefox" eller liknande. Vad som helst är bättre än "Hjälp!!!" eller "Vad är fel?".

mvh

HansenMedlem sedan aug. 2000374 inlägg
#5

daPhil skrev:

Vad är en 'ordentlig' rubrik?

How To Ask Questions The Smart Way -> Use meaningful, specific subject headers

daPhilMedlem sedan apr. 2001151 inlägg
#6

Det är 'doQuote' funktionen som inte vill lira. Istället för att hämta rätt text hämtar den "undefined" i Firefox.

MorphMedlem sedan juli 2000534 inlägg
#7

.innerText är Microsoft-specifikt och är inte standardiserat och stöds därför inte av Mozilla. Använd DOM istället.

Nu skriver du inte vilken typ av HTML-element som returneras av document.getElementById('text'+[messid]). Hur man kommer åt texten med DOM beror lite på vilket HTML-element som du vill manipulera. Om det rör sig om ett enkelt HTMLElement, t.ex. <b>, <span>, <em>, som bara innehåller en rad text utan andra HTML-element, så hämtar du texten genom att referera till nodeValue på elementets första childNode. Så här:

document.forms['replyform'].elements['replyfield'].value = '[ quote]'+ document.getElementById('text'+[messid]).childNodes[0].nodeValue +'[ /quote]\n\n';

(Mozilla gillar inte heller att man refererar slarvigt till objekt i dokumentet. Därför bör du ändra till DOM-kompatibelt sätt att referera till ditt textfält, som ovan.)

399 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
397 ms — hämta tråd, inlägg och bilagor (db)