![]() |
Werte an geklickten Links im Browser anhängen
moin leute!
ich hab mal hier im forum etwas gesucht, aber anscheinend ist es ein eher seltenes problem. ich programmiere zur zeit an einem browser, speziell für ein forum. auf dem programm ist z.b. ein button für 'startseite'. wenn dieser angeklickt wird, dann wird der link vom forum aufgerufen, plus eine variable, damit das forum eine spezielle ansicht für meinen browser wiedergibt. beispiel:
Delphi-Quellcode:
klappt alles bestens. jedoch aber nur wenn meine buttons angeklickt werden. klickt man auf einen link innerhalb des browsers, also keinen meiner buttons, dann fehlt der wert 'ansicht' und die normale version des forums wird angezeigt.
ansicht:='?view=speziellerbrowser';
browser.navigate('http://www.forum.de/'+ansicht); wie kann ich an einen link etwas anhängen? ich bin jeder antwort sehr dankbar... viele grüße fmb ;) |
Re: Werte an geklickten Links im Browser anhängen
hmm sry kann dir jetzt keine antwort auf dein prob geben da ich das genaue problem nichtso ganz verstehe...kannst nichtmal einen link zu deinem forum posten dass koennte ich dir vllcht mehr helfen;)
da o0o |
Re: Werte an geklickten Links im Browser anhängen
Liste der Anhänge anzeigen (Anzahl: 1)
Wie gesagt, wenn man Buttons klickt, oder einen Link vom Menü aufruft funktioniert es, da das Forum dann meinen Wert '?view=pt' erkennt und dann eine spezielle Ansicht angezeigt wird, die der Admin für mich eingerichtet hat. Der Banner wird z. B. dann nicht mehr eingeblendet, da dieser bereits oben auf dem Browser ist.
Ich möchte aber auch, dass der Wert '?view=pt' an einen Link angehängt wird, der nicht in meinem Programm sitzt, sondern auf der Website, die im WebBrowser angezeigt wird. Hier das Programm, damit jeder genau versteht, was ich meine: (Es handelt sich um einen WAP-Browser für 'wap.se-world.info') PS: Ich nutze den EmbeddedWebBrowser von ![]() |
Re: Werte an geklickten Links im Browser anhängen
also wenn ich das jetzt richtig verstanden habe...du willst an alle links ein wenig text dranhaengen um es simple auszudruecken?
wenn es so ist wird es nicht schwer;) hier bei den schweizern is ein schnipsel der alle links aus dem browser holt: ![]() wenn du alle links hast musst du nur noch an jedes link deinen code haengen und den rest kannst du dir dann ausmalen oder?^^ da o0o |
Re: Werte an geklickten Links im Browser anhängen
Delphi-Quellcode:
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); CONST FORUM_URL = 'http://www. ....'; ANSICHT = '.........'; begin if copy(url,1,length(FORUM_URL)) = FORUM_URL then if pos(ANSICHT, URL) = 0 then begin Cancel := True; URL := URL + ANSICHT; WebBrowser1.Navigate(URL); end; end; |
Re: Werte an geklickten Links im Browser anhängen
Kleine Anmerkung zum Browser: Unter TEmbeddedWB.UserInterfaceOptions könntest du noch
EnableThemes auf True setzen, damit die Buttons etc. im XP/Vista Style angezeigt werden. |
Re: Werte an geklickten Links im Browser anhängen
Erst mal vielen Dank für die Antworten!
Noch befor ich Eure Beiträge gelesen hatte, bin ich selbst schon auf 'BeforeNavigate2' gestossen... Habe das Code-Beispiel von API ausprobiert. Es wird zwar fehlerfrei compilerd, aber mein Wert '?view=pt' wird leider immer noch nicht an die URLs angehänt. Nun habe ich einfach mal folgendes ausprobiert:
Delphi-Quellcode:
Nun erhalte ich aber bei Programmstart den Fehler 'Stack-Überlauf'. Das Programm startet zwar dann, stürzt aber ab, wenn ich irgend einen Link anklicke... :(
procedure TFrameBrowser.BrowserBeforeNavigate2(ASender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); begin Browser.Navigate(URL+'?view=pt'); end; |
Re: Werte an geklickten Links im Browser anhängen
Ich finde, du gehst das Problem von der falschen Seite an.
Normalerweise schickt ein Browser seine Kennung im "User-Agent"-Header. Auf diesen sollte die Internetseite reagieren. |
Re: Werte an geklickten Links im Browser anhängen
Zitat:
2. Wenn du .Navigate im BeforeNavigate2 aufrufst, wird BeforeNavigate2 immer wieder aufgerufen und es gibt einen 'Stack-Überlauf'. 3. '?view=pt' musst du ja nur dann anhängen, wenn der string in URL nicht vorkommt. 4. Setze noch Cancel auf True 5. Wenn Bedingung 3 erfüllt ist, dann gibt's das Problem von 2 nicht. |
Re: Werte an geklickten Links im Browser anhängen
Zitat:
|
Re: Werte an geklickten Links im Browser anhängen
Hallo,
der Stack-Überlauf entsteht, weil du weder die laufende Navigation beendest, noch ein Exit-Kriterium für die Beendung des rekursiven Aufrufs deines event handlers festlegst. Schau dir den Code von API nochmal genau daraufhin an. Freundliche Grüße |
Re: Werte an geklickten Links im Browser anhängen
Liste der Anhänge anzeigen (Anzahl: 1)
leider ist es immer noch so, dass nur die internen button den wert wiedergeben...
ich habe mal dazu ein test-projekt zusammengestellt: |
Re: Werte an geklickten Links im Browser anhängen
Zitat:
Deswegen habe ich ja auch gemeint, dass er es falsch angeht. |
Re: Werte an geklickten Links im Browser anhängen
Ich denke es hat ein "/" zu viel in der URL
Delphi-Quellcode:
Browser.Navigate(URL); // ---> [url]http://wap.se-world.info/?view=pt[/url]
|
Re: Werte an geklickten Links im Browser anhängen
mach's mal so:
Delphi-Quellcode:
Cancel := True;
if Copy(URL,Length(URL),1) = '/' then URL := Copy(URL, 1, Length(URL)-1); URL := URL + ANSICHT; Browser.Navigate(URL); |
Re: Werte an geklickten Links im Browser anhängen
Zitat:
|
Re: Werte an geklickten Links im Browser anhängen
info/?
|
Re: Werte an geklickten Links im Browser anhängen
Zitat:
|
Re: Werte an geklickten Links im Browser anhängen
Nochmals danke API!
Hat zwar leider immer noch nicht geklappt, denn es gab wieder den 'Stack-Überlauf' aus. Ich werd mir jetzt mal ein Label dazu erstellen, dass nach einem klick immer URL anzeigen lassen, damit ich den Fehler leichter finden kann. Leider bin ich nur Anfänger im Bereich Delphi... Aber ich bin mir sicher, dass ich eine Lösung finde. Muss heut abend mal mit dem Admin reden... ----------------------------------------------------------------------------- Zitat:
|
Re: Werte an geklickten Links im Browser anhängen
super, ich habe es zu teil hinbekommen!
Delphi-Quellcode:
jedoch gibt es ja auch links im forum, wie z.b. diesen hier:
procedure TForm1.BrowserBeforeNavigate2(ASender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); CONST ANSICHT = '?view=pt'; begin if pos(ANSICHT, URL) = 0 then begin Cancel := True; URL := URL + ANSICHT; Label1.Caption:=URL; Browser.Navigate(URL); end; end; ![]() da steht bereits ein wert der nach dem '?' kommt. in dem fall muss ich dafür dann ein '&view=pt' anhängen statt '?view=pt'. jetzt muss ich nur noch herausfinden, wie ich es anstelle, dass wenn ein ? erkannt wird, dass er dann '&view=pt' statt '?view=pt' einsetzt. aber fürs erste bin ich schon mal erleichtert. |
Re: Werte an geklickten Links im Browser anhängen
Zitat:
Delphi-Quellcode:
CONST
ANSICHT1 = '?view=pt'; ANSICHT2 = '&view=pt'; if Pos('?', URL ) = 0 then // kein ? in der URL gefunden URL := URL + ANSICHT1 else URL := URL + ANSICHT2 |
Re: Werte an geklickten Links im Browser anhängen
danke! danke! ich komme immer näher ans ziel. jetzt muss ich nur noch am login was verbessern, aber das wird nun sicher kein problem sein. am besten extra mit 'if'.
ohne dich API, hätte ich das nicht so hinbekommen. wenn das tool fertig ist, steht dein name unter danksagung im about-feld ;) viele grüße ;) |
Re: Werte an geklickten Links im Browser anhängen
servus!
durch diesen befehl kann ich ja feststellen, dass kein '?' im link enthalten ist:
Delphi-Quellcode:
aber wie mache ich es umgekehrt? nehme ich dann statt der '0' eine '1'? (wenn ein '?' vorhanden, dan....) oder gibt es dafür einen ganz anderen befehl?
if Pos('?', URL ) = 0 then // kein ? in der URL gefunden
URL := URL + ANSICHT1 gruß ;) |
Re: Werte an geklickten Links im Browser anhängen
Überprüfe auf > 0
|
Re: Werte an geklickten Links im Browser anhängen
servus mkinzler!
danke für deinen tipp. es scheint zwar zu funktionieren, aber so wie es aussieht nähert sich dieses projekt dem ende zu... ich habe vorhin mir meinem admin gequatscht, der es einfacher hat von seiner seite aus, ein paar änderungen vorzuehmen, wodurch dann die genannte probleme behoben werden. ich bin wirklich sehr erleichtert... ;) viele grüße ;) ECHT TOP FORUM HIER! :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 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