OnBeforeNavigate2
olay, tek bir belge için birden çok kez oluşur. Yüklediğim belge iframe
içeriyor, böylece OnBeforeNavigate2
olayını birden çok kez tetikler.OnBeforeNavigate2 kaynağının belirlenmesi
Yapmak istediğim, hangi kareyi tetiklediğini bulmak ve çerçeve tetiklendiğinde gezinmeyi iptal etmek ve kullanıcı tıklamasını değil.
ben çerçeve kaynağını belirlemeye pDisp
parametre işlemek gerektiğini biraz eminim ve NULL ebeveyn ile veya tarayıcı ebeveyn ile ise - kod böyle bir şey yapacağını:
void __fastcall TForm1::EmbeddedWBBeforeNavigate2(TObject *ASender, const IDispatch *pDisp,
OleVariant &URL, OleVariant &Flags, OleVariant &TargetFrameName, OleVariant &PostData,
OleVariant &Headers, WordBool &Cancel)
{
// This code is supposed to do that... (not in C++)
//var thisBrowser = pDisp as SHDocVw.WebBrowser;
//var parent = thisBrowser.Parent as SHDocVw.WebBrowser;
//bool isFrame = (parent == thisBrowser || parent == null);
...
}
ben yardıma ihtiyacım Yukarıdakileri bulmak ve C++ Builder'a çeviri yapmak. Yukarıdaki çözüm ise. Ya da değilse - çerçevenin veya iframe'nin bu olayı tetikleyip tetiklemediğini veya kullanıcı tıklamasının nasıl belirleneceğini anlamanın yolu. How do I avoid the OnDocumentComplete event for embedded iframe elements?
Tanklarının
Güncelleme: (gelecek Google'cuların için)
bu konuya başka çözümler bulundu Cevabınız için - benim için işe yaramadı ama Başka biri için olabilir, yine de başka bir çözüm buldum ve sorunu güncelledim. Bunun da '_di_IWebBrowser2' arayüzünü kullanması gerektiğini düşünüyorum. – Coder12345