daPhilMedlem sedan apr. 2001151 inlägg 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.
daPhilMedlem sedan apr. 2001151 inlägg Vad är en 'ordentlig' rubrik?
@ndersMedlem sedan juni 200032 969 inlägg 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 daPhilMedlem sedan apr. 2001151 inlägg 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 .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.)