WebBrowser 操作
界面是 Frame 的 ,左边是 菜单 菜单是用 由JS动态生成的<li class="focus" id="1000011" onclick="clickThirdMenu(false, '1000011', '0000738', '测试', '/pages/bsd/repaircard/aadg.jsf?authKey=47yh%2BwMmFMxgLy8sWheaTP1wYz0hM%3D', this, null);"><span style="cursor:hand" class="text">测试</span></li>
这是其中的一项
我写的 单击 这个选项的代码
HtmlElement btnSubmit = webBrowser1.Document.Window.Frames["frameNav"].Document.All["1000011"];
if (btnSubmit!= null)
btnSubmit.InvokeMember("click");
执行报错 说 属性 clickThirdMenu 的值为null 、未定义或不是Function 对象代码 0
请高手指教
webbrowser C# html 采集 浏览器 --------------------编程问答-------------------- 摆渡
http://hi.baidu.com/superfeng/item/2d8a6f154b7dd0f8ddeeca21
http://www.cnblogs.com/peterzb/archive/2009/07/12/1521787.html
http://www.cnblogs.com/txw1958/archive/2012/09/24/CSharp-WebBrowser.html --------------------编程问答-------------------- 顶一个 --------------------编程问答-------------------- --------------------编程问答-------------------- 那个JS方法在哪里? --------------------编程问答-------------------- <script language="javascript"><!--
<!--
var url = "/";
// 页面跳转
(function() {
var accessUrl = url + 'pages/sys/frame/iframe-access';
var resError = function(retMsg, retCode) {
retMsg = retMsg || '';
retCode = retCode || '';
window.location.replace(accessUrl + '?retMsg=' + encodeURIComponent(retMsg)
+ '&retCode=' + encodeURIComponent(retCode));
};
try {
var iframeAccessUrl = '';
if (iframeAccessUrl) { // 如果是iframe集成ESS页面透明登录后跳转
if ('empty' == iframeAccessUrl) {
resError('跳转地址为空');
return;
}
if (!window.parent || window.parent.length == 0) {
resError('没有嵌套页面');
return;
}
window.location.replace(iframeAccessUrl);
return;
}
// 该页面不能被嵌套
if (window.parent && window.parent.length != 0) {
window.parent.location.href = url;
return;
}
// 不跳转
} catch (e) {
resError('js出错');
}
})();
function selectedLayItem(fct,laytype){
if(fct && fct.nodeType){
var lis=fct.getElementsByTagName("li");
if(lis && lis.length){
var li,link;
for(var i=0;i<lis.length;i++){
li=lis[i];
if(typeof(li)!="undefined" && li.nodeType
&& typeof(li.tagName)!="undefined"){
li.className="";
if(li.childNodes.length){
link=li.childNodes[0];
if(laytype==link.getAttribute("laytype")){
li.className="on";
}
}
}
}
}
}
}
function selectedLayout(laytype) {
if(!laytype) return false;
var frameTop=document.getElementById("frameTop");
var frameFct=document.getElementById("frameFct");
var fct=null;
if(frameTop && frameTop.contentWindow.document){
fct=frameTop.contentWindow.document.getElementById("fct");
selectedLayItem(fct,laytype);
}
fct=null;
if(frameFct && frameFct.contentWindow.document){
fct=frameFct.contentWindow.document.getElementById("fct");
selectedLayItem(fct,laytype);
}
var frame = document.getElementById("frame");
var frameWindow = document.getElementById("frameWindow");
if (laytype == "1") {
frame.rows = "79,60,*,20";
frameWindow.cols = "190,6,*";
} else if (laytype == "2") {
frame.rows = "0,60,*,20";
frameWindow.cols = "190,6,*";
} else if (laytype == "3") {
frame.rows = "79,60,*,20";
frameWindow.cols = "0,6,*";
} else if (laytype == "4") {
frame.rows = "0,60,*,20";
frameWindow.cols = "0,0,*";
}
}
-->
//--></script>
这个JS 因该是在左边的导航页面里的 --------------------编程问答-------------------- 我说的可是 在Frame 框架里面的哦,,,并且 菜单是由Js 生成的,不是静态的 --------------------编程问答--------------------
<TD vAlign=top width=40 align=center><BR><BR><BR><BR><BUTTON
style="FONT-SIZE: 9pt" onclick="pushBtm('YU')">年↑</BUTTON><BR><BUTTON
style="FONT-SIZE: 9pt" onclick="pushBtm('YD')">年↓</BUTTON>
<P><BUTTON style="FONT-SIZE: 9pt"
onclick="pushBtm('MU')">月↑</BUTTON><BR><BUTTON style="FONT-SIZE: 9pt"
onclick="pushBtm('MD')">月↓</BUTTON>
<P><BUTTON style="FONT-SIZE: 9pt" onclick="pushBtm('')">今日</BUTTON>
</P></TD>
private void 定时_Tick(object sender, EventArgs e)
{
HtmlElement resultElement = null;
foreach (HtmlElement currentElement in 网页浏览.Document.All)
{
if (currentElement.GetAttribute("value").Contains("年↑"))
{
resultElement = currentElement;
break;
}
}
if (resultElement != null)
resultElement.InvokeMember("click");
}
VS2010 C# 测试通过 --------------------编程问答-------------------- 菜单是动态生成的么 --------------------编程问答-------------------- 像这种写法根本就没办法:
<SELECT style="FONT-SIZE: 9pt"
onchange=changeCld() name=SY>
<SCRIPT language=JavaScript><!--
for(i=1900;i<2050;i++) document.write('<option>'+i)
//--></SCRIPT>
</SELECT>
所幸是本地文件,可以修改为:
<SELECT style="FONT-SIZE: 9pt"
onchange=changeCld() name=SY>
<SCRIPT language=JavaScript><!--
for(i=1900;i<2050;i++) document.write('<option value='+i+'>'+i)
//--></SCRIPT>
</SELECT>
修改后可以赋值:
HtmlElement name控件 = 网页浏览.Document.All["SY"];
string name控件值 = name控件.OuterText;
if (name控件值 != "1965")
name控件.SetAttribute("value", "1965");
补充:.NET技术 , C#