![]() |
TWebbrowser: Relative Bilder und Verknüpfungen
Hi,
ich bin dabei, einen einfachen HTML-Editor, basierend auf dem TWebbrowser zu erstellen. Wenn ich darin allerdings Bilder oder Links mit relativem Ziel (z.B. [img]..\bild.gif[/img]) einfüge, wird der relative Pfad immer in einen absoluten Pfad umgewandelt. Auch wenn ich den HTML-Code verändere über
Delphi-Quellcode:
wird das Ziel in einen absoluten Pfad umgewandelt.
var Element: IHtmlElement;
Element := IHtmlElement(IHtmlDocument2(Webbrowser1.Document).body); Bereich.innerHTML := '[img]..\bild.gif[/img]'; Lässt sich dies irgendwie unterdrücken oder deaktivieren? Wenn dies nicht möglich ist, würde es auch reichen, wenn man beim Speichern alle Verweise automatisch wieder ins relative Format umwandeln könnte. ![]() Habe schon ewig gesucht, aber leider nichts Passendes gefunden, bin für jede Hilfe dankbar! Cu, Chris |
Re: TWebbrowser: Relative Bilder und Verknüpfungen
Hallo,
Hast du schon eine Loeasung gefunden? |
Re: TWebbrowser: Relative Bilder und Verknüpfungen
Nein, eine Lösung für dieses Problem habe ich leider nicht gefunden!
Das Einzige, was ich diesbezüglich bereits herausgefunden habe ist folgendes: Man kann wenigstens verhindern, dass die Links schon durch bloßes Öffnen und Speichern einer Seite im TWebbrowser verändert werden, indem man die Seite statt mit Navigate() aus einem Stream lädt. (siehe Beispiel unter ![]() Allerdings werden Links bei der manuellen Bearbeitung weiterhin ins absolute Format umgewandelt. Falls jemand hierfür einen Lösungsansatz findet, wäre ich sehr dankbar dafür! Cu, Chris |
Re: TWebbrowser: Relative Bilder und Verknüpfungen
Hi @all,
nach langem Suchen habe ich einen sehr vielversprechenden Lösungsansatz für das beschriebene Problem gefunden! Es gibt wohl eine Möglichkeit, Events des tWebbrowsers abzufangen. Hier müsste dann "nur" noch die eingebaute Übersetzung des HTML-Codes in absolute Verknüpfungen unterdrückt werden. ![]() Leider bin ich nur anscheinend zu blöd, diese Funktionen richtig einzusetzen... Kann hier vielleicht irgendjemand mit mehr Erfahrung helfen? Cu, Chris |
Re: TWebbrowser: Relative Bilder und Verknüpfungen
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn du dich in der Yahoo TWebbrowser Newsgroup anmeldest, findest du auch ein Beispiel (Demo Programm),
um Events abzufangen. Edit: Habe das Demo in der Anlage angehàngt. |
Re: TWebbrowser: Relative Bilder und Verknüpfungen
Hi toms,
danke für das schöne Beispiel. Ich habe mich inzwischen auch etwas näher mit diesen Events befasst (besonders interessant fand ich OnTranslateAccelerator, hat sich dann aber als etwas anderes herausgestellt...) Zwar habe ich noch nicht alles verstanden, aber ich vermute inzwischen, dass es doch kein Event gibt, das bei der Umwandlung des HTML-Codes ausgelöst wird, und mit dem man die Umwandlung unterbinden könnte, oder? Cu, Chris |
Re: TWebbrowser: Relative Bilder und Verknüpfungen
Ich habe mir mal angesehen wie Dreamweaver das macht.
Code:
bringt mich aber auch nicht weiter...weil jedes Projekt mit absoluten Pfadangaben gespeichert wird.
//browseFile(fieldToStoreURL){
//getFullPath(filePathURL){ //getSimpleFileName() { //fixUpPath(docURL,siteURL,savedPath) //fileIsCurrentlyOpen(absoluteFileURL); //Invokes dialog to allow user to select filename. Puts value in text input. // The optional flag stripParameters will remove anything after a question // mark if it is set to true function browseFile(fieldToStoreURL, stripParameters) { var fileName = ""; fileName = browseForFileURL(); //returns a local filename if (stripParameters) { var index = fileName.indexOf("?"); if (index != -1) { fileName = fileName.substring(0,index); } } if (fileName) fieldToStoreURL.value = fileName; } //function: getFullPath //description: converts relative paths into full paths that start with //file:/// //Why this is important: A user is prompted for a location to save //a file. Dreamweaver generates a path that is relative to the currently //opened document. If a developer tries to use this URL in DWfile, it will //not work because dreamweaver assumes the path to be relative to the //extension file. However, full paths will work //Note that this function sometimes returns a full path that is indirect: //For instance: file:///C|/MyWebSite/Hobbies/Cooking/.../Hobbies/Images/cake.gif //However, the user never sees this file path. // //Arguments: //filePathURL - doc-relative,site-relative, or absolute file path function getFullPath(filePathURL){ var retVal = (filePathURL)?filePathURL:''; var docURL; var dotDotSlash; var inMiddle; if (retVal != ''){ //if the document path is relative, for example,My Docs/My Schedule.htm //create an absolute path. if ( filePathURL.indexOf("file://")!=0 ){ //if doc relative... if ( filePathURL.charAt(0)!="/" ){ docURL = dreamweaver.getDocumentDOM('document').URL; dotDotSlash = filePathURL.indexOf('../'); while (dotDotSlash == 0){ docURL = docURL.substring(0,docURL.lastIndexOf("/")); filePathURL = filePathURL.substring(3); dotDotSlash = filePathURL.indexOf('../'); } retVal = docURL.substring(0,docURL.lastIndexOf("/")+1) + filePathURL; //else path is site relative... } else { retVal = dreamweaver.getSiteRoot() + filePathURL.substring(1); } } } return retVal; } //Returns the simple file name for the current document function getSimpleFileName() { var filePath = dreamweaver.getDocumentPath("document"); //get full path of file var lastSlash = filePath.lastIndexOf("/"); if (lastSlash != -1) filePath = filePath.substring(lastSlash+1); return filePath; } // fixUpPath() // Given the location of the current document, the site root, // and the path to a file or folder (expressed as a file:// URL), // returns one of the following: // the file:// URL passed in, if the document has not been saved // the file:// URL passed in, if the document is not in the current site // a document-relative path, if the document has been saved in the current site function fixUpPath(docURL,siteURL,savedPath){ var retVal = ""; if (docURL == "" || (docURL != "" && savedPath.indexOf(dw.getSiteRoot()) == -1)){ retVal = savedPath; }else{ docURL = docURL.substring(0,docURL.lastIndexOf('/')+1); var endStr = (docURL.length > savedPath.length)?savedPath.length:docURL.length; var commonStr = ""; for (var i=0; i < endStr; i++){ if (docURL.charAt(i) == savedPath.charAt(i)){ commonStr += docURL.charAt(i); }else{ break; } } var whatsLeft = docURL.substring(commonStr.length); var slashPos = whatsLeft.indexOf('/'); var slashCount = 0; var dotDotSlash = ""; while (slashPos != -1){ slashCount++; slashPos = whatsLeft.indexOf('/',slashPos+1); } for (var j=1; j <= slashCount; j++){ dotDotSlash += '../'; } retVal = dotDotSlash + savedPath.substring(commonStr.length); } return retVal; } // function: fileIsCurrentlyOpen // description: given a file path, determines if the file is currently open // argument: absoluteFilePath -- an absolute file path function fileIsCurrentlyOpen(absoluteFilePath) { var fileObj = dw.getDocumentDOM(absoluteFilePath); var openFilesArr = dw.getDocumentList(); var fileIsOpen = false, nOpenFiles,i; // openFilesArr is an array of currently open document objects if (openFilesArr.length && openFilesArr.length > 0) { nOpenFiles = openFilesArr.length; for (i=0;i<nOpenFiles;i++) { if (fileObj == openFilesArr[i]) { fileIsOpen = true; break; } } } return fileIsOpen; } Ist das, dass Geheimnis?
Code:
var rootPath = dreamweaver.getSiteRoot();
retVal = dreamweaver.getSiteRoot() + filePathURL.substring(1); |
Re: TWebbrowser: Relative Bilder und Verknüpfungen
|
Re: TWebbrowser: Relative Bilder und Verknüpfungen
Hi Horst,
die beiden Beispiele, die du gepostet hast, erklären, wie man relative Pfade in absolute umwandelt. Das Problem hier ist aber, dass der tWebbrowser bereits selbstständig die relativen Pfadangaben auf einer Seite in absolute umwandelt, was allerdings nicht gewollt wird. Zwar ist es möglich, die Pfadangaben wieder zurück zu konvertieren (die Umkehrung deines Weges), doch dadurch wird der Original-Inhalt der Seite verändert (z.B. werden auch die Links umgewandelt, die bereits vorher absolut waren und es auch bleiben sollen). Daher suchen wir hier nach einer Lösung, um den tWebbrowser von der Konvertierung der Pfadangaben abzuhalten. Cu, Chris |
Re: TWebbrowser: Relative Bilder und Verknüpfungen
Hallo Chris
Zitat:
Ich suche auch schon ewig nach einer Lösung für dein Problem. Grüße Horst |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz