zoukankan      html  css  js  c++  java
  • cefSharp通过js操控页面,含跨域操控

    基本操控
    cefSharp可以让页面运行指定的js代码,所以这就为操控页面提供了方法,js能做的所有操控DOM元素的方法,cefSharp都可以做了
    在67版本中对页面使用js的方法很简单,一句话:

    browser.ExecuteJavaScriptAsync(script);//script是String格式的js代码
    1
    ##获取Js返回的结果

    如果要获取到js返回的结果,则需要麻烦一点

    String script =
    @"(function() {
    var tags = document.getElementsByTagName('span');
    var result=false;
    for(var i in tags){
    if (tags[i].nodeType == 1){
    if (tags[i].getAttribute('class') == 'example'){
    result=true;
    }
    }
    }
    return result;
    })()";

    browser.EvaluateScriptAsync(script).ContinueWith(x =>
    {
    var response = x.Result;

    if (response.Success && response.Result != null)
    {
    bool result = (bool)response.Result;
    if (result)
    {
    //TODO
    }
    else
    {
    //TODO
    }
    }
    });

    注意:花括号中间的代码是异步执行的
    上面的例子的作用是在在页面中寻找一个class为example的span元素,找到返回true,找不到返回false;

    跨域操控
    跨域操控的方式很简单,读取browser里面有几个框架,在框架下面执行指定JS代码就好了

    List<long> idList = browser.GetBrowser().GetFrameIdentifiers();//idList里面装了页面所有iframe的数据
    //取出第2个iframe
    IFrame frame = browser.GetBrowser().GetFrame(idList[2]);
    //执行js代码
    frame.ExecuteJavaScriptAsync(script);
    ————————————————

  • 相关阅读:
    DJango简单的后台定义登录验证
    简单聊聊HTTP/TCP/IP协议
    简单的线程说明
    设计模式 -- 常用设计模式
    网络知识 -- 第二部
    c#利用脚本,本地执行linux命令
    Json和类之间的转化
    关于地址映射穿透和套接字复用的说明
    多线程调用中的注意事项
    Task多线程的常规用法
  • 原文地址:https://www.cnblogs.com/soundcode/p/13042186.html
Copyright © 2011-2022 走看看