webbrowser 如何执行ajax函数 data-type标记
我想做一个程序,加载一个网站页面 执行里面的一个函数更新数据,类似与刷子性质的。但是跟js函数不一致不知道如何下手了,谁做过类似的程序吗,帮帮小弟。 通过这个链接按钮执行函数更新数据<a class="dpl-btn btn-op" data-type="mypst" href="javascript:;" title="更新">更新</a> Ajax --------------------编程问答-------------------- 用jquery轻松搞定--------------------编程问答--------------------
$(a).click(function{
....
更新数据代码
....
});
winform使用webbrowser 如何实现模拟点击呢,可以具体些吗?毕竟不知道网站的具体数据操作,所以只能模拟点击。 --------------------编程问答-------------------- webform里面如果不知道具体数据操作,怎么帮你呢? --------------------编程问答-------------------- 很无奈,写一个在局域网内测试,居然一运行U盘内EXE文件就中病毒,模拟操作报错。不然的话可以经验交流了。。。。。。 --------------------编程问答-------------------- 网页页面分析是json执行操作,有什么办法再webbrowser加载完页面后能触发这个操作吗?<a class="dpl-btn btn-op" data-type="mypst" href="javascript:;" title="更新">更新</a>
还有 就是这个链接的所属div 加了data-mod-config='{"getOfferStarpstUrl":"/asyn/get_offer_star_pst.json","allowedOptimize":true}'>不知道这个能不能用到,对了那个json里面是{"hiddenpst":0},能根据这些信息实现对”更新“按钮的模拟点击或者触发json更新数据吗? --------------------编程问答-------------------- 额。。。。没有人能解决吗? --------------------编程问答-------------------- 最近玩玩,拿去参考:
--------------------编程问答-------------------- 还是没有解决,如何在webbrower控件下操作json,触发更新按钮,执行更新操作,我使用Newtonsoft.Json.dll操作,还是不能成功,还是什么反应都没有。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Threading;
using System.IO;
namespace FTTH改造工程设备关联辅助工具
{
public partial class Form1 : Form
{
DataSet 读取表格数据 = new DataSet();
string[] 列名 = new string[] { "设备编号", "查询号码", "用户地址", "完成状态", "完成时间" };
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
创建数据显示(列名, 数据集);
数据集.Columns[2].Width = 580;
string 网页 = Application.StartupPath + "\\万年历查询.htm"; 打开网页.Navigate(网页);
}
private void 退出_Click(object sender, EventArgs e)
{
this.Close();
}
private void 导入数据_Click(object sender, EventArgs e)
{
OpenFileDialog 打开文件 = new OpenFileDialog();
打开文件.Filter = "Excel表格文件(xlsx)|*.xlsx;|Excel表格文件(xls)|*.xls;|文本文件(txt)|*.txt;|所有文件(*.*)|*.*";
if (打开文件.ShowDialog() == DialogResult.OK)
{
if (打开文件.FileName.Contains(".xls"))
读取微软表格文件(打开文件.FileName);
}
else 数据集.DataSource = null;
}
private void 读取微软表格文件(string 文档名)
{
string 微软表格 = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + 文档名 + "; Extended Properties = \"Excel 12.0 Xml; HDR = No\"";
OleDbConnection 表格文件 = new OleDbConnection(微软表格);
表格文件.Open();
OleDbDataAdapter 连接表格 = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", 表格文件);
连接表格.Fill(读取表格数据, "读取Excel数据");
表格文件.Close();
数据集.DataSource = 读取表格数据.Tables["读取Excel数据"];
控制颜色(数据集);
}
private void 创建数据显示(string[] 表名, DataGridView 控件名)
{
控件名.Columns.Clear();
foreach (string 元素 in 表名)
{
DataGridViewTextBoxColumn 列 = new DataGridViewTextBoxColumn();
列.HeaderText = 元素; 列.DataPropertyName = 元素;
列.MaxInputLength = 3988; 控件名.Columns.Add(列);
}
}
private void 控制颜色(DataGridView 控件名)
{
for (int 颜色 = 0, 行数 = 控件名.RowCount; 颜色 < 行数; 颜色++)
if (颜色 % 2 == 0) 控件名.Rows[颜色].DefaultCellStyle.BackColor = Color.AliceBlue;
}
private void 提取数据_Click(object sender, EventArgs e)
{
/*for (int 数 = 0; 数 < 数据集.RowCount; 数++)
{ }
string 发送号码 = 数据集.Rows[数].Cells[1].Value.ToString();
HtmlElement ID控件 = 打开网页.Document.All["PSTNCodeInput"];
if (ID控件 != null) ID控件.SetAttribute("value", 发送号码);
Thread.Sleep(50);
HtmlElement ID按钮 = 打开网页.Document.All["SearchButton"];
if (ID按钮 != null) ID按钮.InvokeMember("click");
Thread.Sleep(2000);
ID控件 = 打开网页.Document.All["AddressNameInput"];
数据集.Rows[数].Cells[2].Value = ID控件.GetAttribute("value");*/
}
private void 连接网站_Click(object sender, EventArgs e)
{
打开网页.Navigate(new Uri(网址.Text.Trim()));
}
private void 数据集_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
int 定行 = 数据集.CurrentCellAddress.Y, 定列 = 数据集.CurrentCellAddress.X;
if (定列 == 3)
{
数据集.Rows[定行].Cells[3].Value = "√";
数据集.Rows[定行].Cells[4].Value = DateTime.Now.ToShortDateString();
}
if (定列 < 3)
Clipboard.SetText(数据集.Rows[定行].Cells[定列].Value.ToString());
}
private void 导出数据_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel.Application 创建Excel文件 = new Microsoft.Office.Interop.Excel.Application();
this.Invoke(new Action(delegate()
{
创建Excel文件.Application.Workbooks.Add(true);
for (int 标头 = 0; 标头 < 列名.Length; 标头++) 创建Excel文件.Cells[1, 标头 + 1] = 列名[标头];
for (int 行 = 0, 数 = 数据集.RowCount; 行 < 数; 行++)
{
数据集.CurrentCell = 数据集.Rows[行].Cells[0];
for (int 列 = 0, 量 = 数据集.ColumnCount; 列 < 量; 列++)
创建Excel文件.Cells[行 + 2, 列 + 1] = "'" + 数据集.Rows[行].Cells[列].Value;
}
创建Excel文件.Visible = true;/* 创建Excel文件.SaveWorkspace();*/ 创建Excel文件.Quit();
}));
MessageBox.Show("数据导出Excel成功,请保存好!" + 数据集.RowCount.ToString() + "行数据。", "友情提示!"); 创建Excel文件.Quit();
}
private void 数据集_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(System.String)) && 数据集.Rows.Count > 0)
{
Point clientPoint = 数据集.PointToClient(new Point(e.X, e.Y));
数据集.Rows[数据集.HitTest(clientPoint.X, clientPoint.Y).RowIndex].Cells[数据集.HitTest(clientPoint.X,
clientPoint.Y).ColumnIndex].Value = (System.String)e.Data.GetData(typeof(System.String));
}
int 定行 = 数据集.CurrentCellAddress.Y, 定列 = 数据集.CurrentCellAddress.X;
string 数据整理 = 数据集.Rows[定行].Cells[2].Value.ToString();
数据集.Rows[定行].Cells[2].Value = 数据整理.Remove(数据整理.IndexOf("||")).Trim();
}
private void 数据集_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(System.String)))
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
}
private void 打开网页_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
int 定行 = 数据集.CurrentCellAddress.Y, 定列 = 数据集.CurrentCellAddress.X;
HtmlElement ID控件 = 打开网页.Document.All["PSTNCodeInput"];
if (e.KeyCode == Keys.Enter)
if (ID控件 != null)/*赋值*/
ID控件.SetAttribute("value", 数据集.Rows[定行].Cells[定列].Value.ToString());
if (e.KeyCode == Keys.Space)
{
ID控件 = 打开网页.Document.All["AddressNameInput"];/*获值*/
if (数据集.Rows.Count > 0)
{
if (ID控件 != null)数据集.Rows[定行].Cells[2].Value = ID控件.GetAttribute("value");
string 数据整理 = 数据集.Rows[定行].Cells[2].Value.ToString();
数据集.Rows[定行].Cells[2].Value = 数据整理.Remove(数据整理.IndexOf("||")).Trim();
}
}
}
}
}
网页页面分析是json执行操作,有什么办法再webbrowser加载完页面后能触发这个操作吗?<a class="dpl-btn btn-op" data-type="mypst" href="javascript:;" title="更新">更新</a>
还有 就是这个链接的所属div 加了data-mod-config='{"getOfferStarpstUrl":"/asyn/get_offer_star_pst.json","allowedOptimize":true}'>不知道这个能不能用到,对了那个json里面是{"hiddenpst":0},能根据这些信息实现对”更新“按钮的模拟点击或者触发json更新数据吗?
补充:.NET技术 , C#