Forum > Klientspråk > JavaScript
Hej.
Jag har laggt till en knapp bredvid source fältet på tinymce bildfönster. Så den öppnar ett nytt fönster med min bildhanterare, där man kan kolla på bilden eller välja "Lägg till". Tanken är att den ska läggas till i tinymce's bildfönsters source textfält. Men det är där jag får problem, jag verkar inte kunna hitta just det fältet när jag ska lägga till bildens sökväg med javascript.
min javascript funktion, där textfältet heter 'src' i bildfönstret man får upp när man klickar på tinymce's bildknapp
function GetRowValue(val) {
window.opener.document.getElementById("src").value = val;
window.close();
}
Där val är bildens sökväg, t.ex. /Upload/Image/hello.png
Hoppas ni förstår hur jag menar.
| Skriv utvad får du för fel? får du upp att den inte är deffinerad, eller whats the problem?
Vad är objektet src för DOM objekt?
Detta är vad jag får som felmeddelande
window.opener.document.getElementById("src") is null
GetRowValue("/Upload/Files/Bilder/633745429727659830.png")
javascript:GetRowValue('/Upload/Files/Bilder/633745429727659830.png')()()javascri...830.png')
[Break on this error] window.opener.document.getElementById("src").value = val;
Hittar ingen om vad dom för src är...
Den hittar inte ett DOM objekt med ett ID "src" i window.opener. Behöver mer kod eller någon demo hellst där man kan kolla live, eller exakta koder du använder dig av (så man slipper uppfinna hjulet en gång till ;) )
loopa igenom alla DOM-element som finns i window.opener, leta upp alla vars id != "" eller null, vet inte om det är nullable, och kör en alert, på så sätt hittar du alla element som finns som du kan använda dig av, finns ingen med id't src, ja då letar du på fel ställe
Exakta koden för att lägga till bilden i fältet är
function GetRowValue(val) {
window.opener.document.getElementById("src").value = val;
window.close();
}
javascript:GetRowValue('/upload/img.jpg')
Koden jag använder för att öppnat fönstret med:
var srcField;
function fileManagerCallBack(field_name, url, destinationType, win) {
srcField = win.document.forms[0].elements[field_name];
var fileSelectorWindow = window.open('/Util/Site/Pages/p/ImageList.aspx?availableModes=All&id=' + srcField.id + '&type=' + destinationType, 'FileManager', 'height=600,width=400,resizable=yes,status=yes,scrollbars=yes');
fileSelectorWindow.focus();
}
function onFileSelected(selectedUrl) {
srcField.value = selectedUrl;
}
sedan i tinymce inställningarna
file_browser_callback = "fileManagerCallBack"
Den input jag letar efter
<input style="width: 260px;" name="src" id="src" value="" class="mceFocus" onchange="ImageDialog.showPreviewImage(this.value);" type="text">
Vad konstigt, men när man klickar på bildknappen i tinymce's panel, så får man upp en popup och där finns det ett textfält, "Image url" bredvid. På högersida om det har jag lagt till en knapp, så jag kan leta efter bilder i min filhanterare och lägga till det med javascript, men det är den src input jag inte hittar. Den som i tinymce bildpanel.
Det är å andra sidan en helt annan fil, men borde inte den inkluderas i samma fil när man klickar på bildknappen i panelen? eller är det fortfarande en helt annan fil?
Det är inte en "opener" som sker där, det är en iframe som öppnas, window.opener.document.getElementById("src").value = val; referea till en opener, det borde räcka med att du ta parent dokumentet .
window.parent.document.getElementById("src").value = val;
Sådär? Det fungerar inte, den blir fortfarande null, får fel på båda dessa koder
Eller såhär?
window.opener.parent.document.getElementById("src").value = val;
Tror det räcker med document.
Fungerar fortfarande inte, gör säkert något fel. Så la upp en test url, http://onesite.se/sandbox/tinymce/
Så om du klickar på bild ikonen så kommer du se en ikon bredvid första fältet som ska vara där man ska klicka för att få välja bild.
Ser ut att den "blå" knappen inte anropar en vanlig window.open (popup) för att kunna använda sig av objektet opener, om du ändra det (på något sätt) så kommer du få dokument referensen till iframen i popupen som tinymce kör med, och då kan du få DOM objektet:
opener.document.getElementById("src");Tackar för hjälpen =)