问题标签 [microsoft.mshtml]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
html - MSHTML 出现在编辑
我想添加另一个 MSHTML 问题。感谢所有回复。
我们在 Delphi 中使用标准的 TWebbrowser 组件,该组件在内部使用 mshtml.dll。另外,我们使用注册表来确保页面使用新的渲染引擎(Web-Browser-Control-Specifying-the-IE-Version,MSDN:FEATURE_BROWSER_EMULATION)进行渲染。因此,我们使用 IE 10 的渲染,但使用 ie 8 到 ie 11 的结果相同。
使用标准的 MSHTML (IE7) 渲染机器可以正常工作,但是由于新的渲染选项,我们需要新的 MSHTML 渲染。
我们使用控件的设计模式来使用户能够对文档进行更改:
现在我们遇到了以下问题:我们通过 IPersistStreamInit.Load(...) 将以下(简化的)HTML 加载到 WebBrowser 中:
在 WebBrowser 用户可以看到以下内容:
现在,当在编辑模式下在 WebBrowser 中选择单词“with”并键入一个字符时,会出现一些空格。HTML 现在有 在其中 - 与编辑前 HTML 中的空格一样多:
代码是:
通过替换 WebBrowser 中的“空格”一词可以达到相同的效果。
对于使用我们的应用程序的用户来说,这是一种不好的行为。
每个文本前面有空格的 HTML 代码都有相同的行为。麻烦的是,MSHTML 本身会生成这样的 HTML。
现在我们想到了一个解决方案来删除每行左侧的所有空格,但我们认为这样的解决方法可能会导致更大的混乱,因为它们会改变 HTML。这可能会导致渲染的一些不同行为。
c# - mshtml.HTMLDocument 如何隐藏具有类属性的动态创建的 div
我正在尝试在 C# WebBrowser 控件(WPF 不是 WinForm)中加载一个网页。除了其他内容,页面还有一个图像旋转器,它动态创建两个具有相同类的 div 以利用图像旋转。在LoadComplete event
WebBrowser 控件中,我附加了一个样式表来隐藏两个 div。页面加载时动态创建的两个 div 如下:
在 webbrowser 控件的 LoadComplete 事件中分配 css 的方式是:
但这似乎不起作用,因为它没有隐藏 div。任何人都请给我一些想法,我错过了什么。
mshtml - 如何访问通过javascript创建的mshtml中的动态控件
如何访问通过 javascript 创建的 mshtml 中的动态控件。
我有一个是/否单选按钮。选择是时,将动态创建一个文本框并将其添加到此单选按钮旁边。我可以使用 HTMLDocument.getElementsByName 或 HTMLDocument.getElementById 或 HTMLDocument.all.item 访问单选按钮。
我想访问新创建的文本框。创建动态文本框的代码是用 javascript 编写的,我对此没有任何控制权。
返回空值。
mshtml - mshtml fireevent onchange not firing
I am unable to fire an "onchange" event in mshtml. Can you please tell me what I am doing wrong here.
I am getting variable "se" as null. I got this piece of code from another link http://www.itwriting.com/phorum/read.php?3,1507
Can anyone help me with this.
Thanks, Sam
c# - 在 C# 中使用 mshtml 控件获取特定选项卡的内容
我想使用 MSHTML 控件获取第 1 节和第 3 节选项卡的内容。
下面是我到目前为止所做的代码。
谁能帮我解决这个问题
c# - 如何在 WPF WebBrowser 中调用 DOM 元素的 onchange、onblur 事件
我已经尝试了很多来找到调用 WPF WebBrowser 加载文档的 DOM 事件的解决方案。这是调用点击事件的代码 -
但是 onchange、onblur 事件有点不同,不能以这种方式工作。我找到了另一个解决方案——即将 WinForm WebBrowser 控件托管到 WPF 窗口中,因为它可以在那个控件中。如果有办法在 WPF WebBrowser 上做到这一点,那么我为什么要寻求解决方法!那么有什么解决办法吗?
c# - 无法使用 MSHTML 对象读取表格行
我正在使用 C# 开发一个 Windows 应用程序,其中我使用了一个 MSHTML 对象从 DOM (HTML) 读取表行。该表有THead
和TBody
标签,其中有一个<TR>
标签。
在 IE 9 中打开 HTML 页面时,会呈现所有表格行。当 HTML 在 IE 11 中打开时,它只呈现THead
标签内的行。
不同浏览器版本中不同行为的原因可能是什么?
我正在从 IE 加载 DOM 以获取所有值。示例 HTML:
microsoft.mshtml - 为什么 mshtml.htmldocument.body.all 的类型只是对象?
说 dw1 是一个类型为 msthml.htmldocument 的变量
dw1.all 类型为 mshtml.ihtmlelementcollection
但是, dw1.body.all 类型是对象。
为什么会这样?
说得更直白点。
为什么 type ofdw1.all
与type of 不同dw1.body.all
?
.net - 无法加载引用 IL 程序集的 Microsoft.mshtml 的本机图像
问题
我有一个引用 Microsoft.mshtml 主互操作程序集的 WPF 应用程序。我正在使用 NGen 创建我的应用程序的本机映像。如果我启动我的应用程序,恐怕永远不会加载本机图像。
复制信息
例如,在 Visual Studio 中创建新的 WPF 应用程序“WpfApplication1”,添加对“C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll”的引用,将 Embed Interop Types 设置为 false,设置特定版本为 false 并将 Copy Local 设置为 true。使用某种类型的 Microsoft.mshtml,例如实例化 mshtml.HTMLDocumentClass。构建应用程序后,从“c:\Windows\Microsoft.NET\Framework\v4.0.30319”运行 NGen,如下所示:
NGen 没有显示任何错误。启动我的应用程序后,我正在使用 vmmap 或进程资源管理器验证是否已加载本机映像。不幸的是,它们都没有显示创建的本机图像。
融合日志
所以我启用了融合日志查看器,这就是它告诉我的:
*组装活页夹日志条目(3/13/2016 @ 11:30:48 AM)*
手术成功。绑定结果:hr = 0x0。操作成功完成。
从以下位置加载的程序集管理器:C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 在可执行文件 C:\Users\azureuser\Documents\visual studio 2015\Projects\WpfApplication1\WpfApplication1\bin\Release\WpfApplication1 下运行.exe
--- 详细的错误日志如下。LOG:开始验证所有依赖项。
LOG:[Level 1]开始验证原生镜像依赖 mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089。
LOG:[Level 1]开始验证IL依赖PresentationFramework,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35。
LOG:[Level 1]开始验证 IL 依赖 WindowsBase,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35。
日志:[Level 1]开始验证 IL 依赖 System.Xaml,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089。
LOG:[Level 1]开始验证 IL 依赖 PresentationCore,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35。
LOG:[Level 1]开始验证原生镜像依赖系统,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089。
LOG:[Level 2]开始验证原生镜像依赖 mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089。
LOG:[Level 2]开始验证 IL 依赖 System.Configuration,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a。
LOG:[Level 2]开始验证 IL 依赖 System.Xml,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089。
本机映像具有正确的版本信息。
LOG:[Level 1]开始验证 IL 依赖 UIAutomationTypes,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35。
日志:[级别 1]开始验证 IL 依赖项 Microsoft.mshtml,版本=7.0.3300.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a。
警告:无法加载 IL 程序集。(小时 = 0x80131040)。
警告:未找到匹配的本机图像。
日志:从 C:\Users\azureuser\Documents\visual studio 2015\Projects\WpfApplication1\WpfApplication1\bin\Release\WpfApplication1.exe 加载的 IL 程序集。
评论
- 如果我删除包含 mshtml 代码的 Microsoft.mshtml 引用,则会按预期加载本机图像。所以总的来说 ngening 在我的系统上工作。
- 我已经在三种不同的操作系统上测试了这种行为,产生了相同的结果:Windows 7 Ultimate、Windows Server 2012 Datacenter 和 Windows 10。
- 通过运行禁用负载验证
sn.exe -Vr *,*
不会改变行为 - 由于实际从 GAC 加载的 Microsoft.mshtml 与“C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies”(不同的证书)中的略有不同,我也尝试直接引用GAC 没有产生不同的结果
- 通过运行将“C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies”下的一个放入 GAC
gacutil -if
也不起作用 - 我使用针对 .net 4.5 的 VS2013 和针对 .net 4.6 的 VS2015 构建了这个应用程序
.net - mshtml.IHTMLElement getAttribute 不稳定行为
在一个应用程序中,我mshtml.IHTMLElement.getAttribute(mimetype)
用来提取mshtml.HTMLDocument
.
例子:
www.mywebsite.com/index.html。这个网页有 1 个 mimetype,它是一个 Excel 工作簿。
问题:我正在位置 1(亚太地区)运行此应用程序,当我访问该网页时,我收到一个弹出窗口,MsgBox
显示MIMETYPE
我的同事在位置 2(亚洲)运行此应用程序,当他访问该网页时网页,他会弹出一个MsgBox
显示NONE FOUND
。网页访问不是问题,我们大约在同一时间访问该网页,它是一个静态页面,换句话说,它不是MIMETYPE
基于地理位置服务的。他可以通过手动进入浏览器并单击链接来访问 Excel 工作簿。