问题描述
我需要向打开的页面及其iframe中注入一些脚本。应该在开始时进行,并且每次用户导航到下一页时。 我的init注入没有问题,我这样做是这样的:
public static void InstallScripts(InternetExplorer internetExplorer,string contentScript)
{
var scriptCode = ...
IHTMLDocument2 document = internetExplorer.Document;
ExecuteScript(document,scriptCode);
ExecuteScript(document,"wgxpath.install();");
IHTMLDocument3 document3 = (IHTMLDocument3)document;
var iFrames = document3.getElementsByTagName("iframe");
var hTMLIFrames =
iFrames.OfType<IHTMLElement>().Select(x => (HTMLIFrame)x);
foreach (HTMLIFrame iframe in hTMLIFrames)
{
try
{
var dd = iframe.src;
var ss = iframe.readyState;
ExecuteScript(iframe.contentwindow.document,scriptCode);
ExecuteScript(iframe.contentwindow.document,"wgxpath.install();");
}
catch { }
}
InjectScript(internetExplorer,contentScript);
}
...
private static void ExecuteScript(IHTMLDocument2 document,string script)
{
var scriptExecutor = (IScriptExecutor)document;
scriptExecutor.Script(out object scriptObj);
try
{
scriptObj.GetType().InvokeMember("eval",BindingFlags.InvokeMethod,null,scriptObj,new object[] { script });
}
catch { }
}
问题出在导航之后。 当我尝试访问contentwindow中的文档时,我刷新了页面,并且一些iframe抛出了Access Denide。 这是我的活动代码:
internetExplorer.DocumentComplete += (object pdisp,ref object url) =>
{
var ieInstance = (InternetExplorer)pdisp;
if (ieInstance.ReadyState == tagREADYSTATE.READYSTATE_COMPLETE)
{
if (ieInstance.LocationURL != "about:blank" && ieInstance.LocationURL == (string)url)
{
InstallScripts(ieInstance,contentScript);
}
}
};
为什么在打开页面后可以访问iframe的文档,为什么不能在DocumentComplete之后访问它?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)