gpt4 book ai didi

.net - IHTMLSelectionObject.createRange() 抛出 UnauthorizedAccessException

转载 作者:行者123 更新时间:2023-12-03 23:10:31 25 4
gpt4 key购买 nike

我编写了以下代码来从当前网页中检索所选文本:

IHTMLDocument2 mainDoc = ...
for ( int i = 0; i < mainDoc.frames.length; i++ ) {
对象 refIndex = i;
var frame = (IHTMLWindow2)mainDoc.frames.item( ref refIndex );
IHTMLDocument2 frameDoc;
尝试 {
frameDoc = frame.document;
} catch ( UnauthorizedAccessException ex ) {
//来源:http://codecentrix.blogspot.com/2008/02/when-ihtmlwindow2document-throws.html
var sp = (IServiceProvider)frame;

//使用 IServiceProvider.QueryService 获取 IWebBrowser2 对象。
对象 brws = 空;
sp.QueryService( ref IID_IWebBrowserApp, ref IID_IWebBrowser2, out brws );

//从 IWebBrowser2 获取文档。
IWebBrowser2 浏览器 = (IWebBrowser2)brws;
frameDoc = (IHTMLDocument2)browser.Document;
}
var range = frameDoc.selection.createRange() as IHTMLTxtRange;
if ( !string.IsNullOrEmpty(range.text) ) 返回 range.text;
}
返回字符串。空;

但是在某些网页上,调用 frameDoc.selection.createRange() 会抛出 UnauthorizedAccessException:

System.UnauthorizedAccessException 未处理
Message="访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))"
来源="Microsoft.mshtml"
堆栈跟踪:
在 mshtml.IHTMLSelectionObject.createRange()

我怎样才能避免这个错误?

最佳答案

这是预期行为,Cross-site scripting默认情况下是禁用的,并且您正在跨框架执行脚本,而不管它们的域。

关于.net - IHTMLSelectionObject.createRange() 抛出 UnauthorizedAccessException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1416662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com