06. februar 2002 - 23:22Der er
11 kommentarer og 2 løsninger
vc++ og activeX component Microsoft Web Browser
Jeg har i et dialog baseret MFC project inkluderet en ActiveX control - Microsoft Web Browser. Naar man trykker paa et hyperlink kommer der en onclick event. Denne event kan man associere til en javascript funktion. Jeg kunne forestille mig at eventet bobler op, og paa et tidspunkt maa den kunne fanges udenfor selve browservinduet - altsaa i VC++ applikationen.
Er det muligt at gribe events fra en ActiveX Web Browser komponent udenfor selve komponenten?
Og, er det muligt at laese en vaerdi fra en javascript variable/ et input felt ... stadig UDENFOR selve web browser komponenten i min vc++ applikation?
Når href-argumentet starter med "app:", ved jeg at det er noget jeg bruger i min applikation. Når der klikkes på et A-tag med en href-attribut, vil browserkontrollen forsøge at udføre det. I din parent (uden for komponenten) kan du så fange et eventet som OnBeforeNavigate2(...) Her undersøger du om href'en starter med "app:" og hvis ja, håndterer du selv eventet og signalerer dette ved at sætte *pbCancel=TRUE; så kontrollen ikke også forsøger at håndtere det.
void CHTMLViewEx::OnBeforeNavigate2(LPCTSTR lpszURL, DWORD nFlags, LPCTSTR lpszTargetFrameName, CByteArray& baPostedData, LPCTSTR lpszHeaders, BOOL* pbCancel) { CString strId(lpszURL); if(strId.Left(4) == "app:") { // This is a message that we will handle here! *pbCancel=TRUE;
ok, jeg kan se ideen i det, men inde paa mics hjemmeside, er der beskrevet at man kan fange disse events. Jeg tror maaske at jeg ville kunne bruge dit forslag, men jeg staar i den situation, at jeg skal fange en event fra en viewpoint plugin - a la SVG pluginen fra Adobe hvis det siger dig noget. Her bliver der ikke trykket paa et link, og siden bliver slet ikke genloadet. Saa jeg vil i dette tilfaelde ikke kunne benytte mig af beforenavigate :-(
Okay, hvis du gider må du da gerne lige smide et link til siden, måske jeg kan bruge noget derfra...
Jeg tror nu stadig godt du kan bruge metoden. Det event du får i kontrollen kan du vel bare sende videre ved at kalde noget lign.: OnWhatEverEvent() { document.location = "app:..."; // kan ikke lige helt huske syntaksen }
ja, men problemetet er at jeg ikke maa genloade siden. Siden indeholder en masse 3D modeller(faktisk a la flash bare i 3D). Flash genloader heller ikke siden naar der trykkes paa et link.
jeg har faktisk fundet noget som viser hvad det er jeg gerne vil ... det er i en fil... jeg ved ikke om du er interesseret i at faa det jpk. Det fanger onclick, onmouseover, onmouseout(indefra VC++ apps) og saadanne ting....
jo tak... Men du har ikke helt forstået metoden beskrevet ovenfor! Siden genloades IKKE! Når man sætter *pbCancel=TRUE; som beskrevet tidligere, signalerer man netop at man HAR håndteret eventen og der ikke skal gøres mere...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.