vb.net中如何利用api函数获取网页源代码

vb.net中如何利用api函数获取网页源代码,第1张

Dim MyClient As WebClient = New WebClient

Dim MyReader As New SystemIOStreamReader(MyClientOpenRead(url), SystemTextEncodingDefault) '定义新的文件流并读取网页文件数据,url表示需要打开的网页地址

Dim longTxt As String = MyReaderReadToEnd 'longtxt存储了网页的源码

MyReaderClose()

①jquery在父页面 获取iframe子页面的元素

代码如下:(objid为子页面的id)

$("#objid",documentframes('iframename')document)

②js 在父页面获取iframe子页面元素代码如下:

windowframes["iframe_ID"]documentgetElementByIdx_x("元素id");

以上两种都能获取到子页面中的元素,再根据元素去获取元素的值就可以了。

两点

1既然你用jQuery了,为什么还要用getElementById()来获取元素?况且,获取iframe中元素也没这么麻烦啊

$("#id_iframe")contents()find("#id_button_test");

这不就好了。。

2你这部分代码是写在ajsp页面中了吧?那我估计之所以不运行,是因为你注册点击事件的时候,bjsp页面还没有加载完。所以尽管你调试的时候能输出,但是代码里是注册不上的。把这段代码写在bjsp的windowonload事件中

方法在窗口的insets发生变化时,被调用。View调用该方法,以调整内容来适应窗口的变化。窗口的insets变化,包括status bar、软键盘、navigation bar等的显隐。

一般情况下我们不需要关心这个方法。但如果设置 SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN、SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 等标识开启沉浸式,默认情况下,我们的内容区域就会被status bar、软键盘等遮挡。

该方法的默认实现会根据insets值来设置view的padding,并返回true,防止该事件继续传递(即只有一个view会真正fitSystemWindows)。要开启该方法,需要执行 setFitsSystemWindows(true) ,或在XML中设置 android:fitsSystemWindows="true" 。

如果只需要为XML文件的根布局设置fitSystemWindows,该方法的默认实现就能满足。如果需要适配更加复杂的布局(比如有两个子View,一个在顶部,一个在底部,则顶部的需要根据insets设置paddingTop,底部的需要根据insets设置paddingBottom),你就需要重写该方法,自行处理insets。

需要说明的是,如果不做任何处理,所有view接收到的insets都是一样的(比如top是status bar的高度,bottom是软键盘的高度)。该方法的执行在layout之前。

WindowInsets

该类封装了几种不同的insets。 mSystemWindowInsets 对应status bar、软键盘等引起的insets。可用方法如下:

获取四个边的inset

消费掉insets,使之不再传递

生成新的WindowInsets对象

该方法会被第一个调用,如果设置了listener,则执行自定义的listener,否则执行 onApplyWindowInsets 。

默认情况下该方法会执行第一个分支,即执行上面的 fitSystemWindows 。api20以上,android建议覆写该方法,而不是已废弃的 fitSystemWindows 。

监听fitSystemWindow事件。

listener类如下:

ViewGroup:

可以看到,从根布局开始,先执行本身的 superdispatchApplyWindowInsets 方法,然后遍历执行子View的 dispatchApplyWindowInsets 方法,如果被消费掉,则停止传递。

布局如下:

设置沉浸式:

设置软键盘适配方式:

现在布局是这个样子的:

图1标题栏被状态栏遮挡,图2页面被软键盘遮挡。

再次强调一个概念,默认情况下,设置 android:fitsSystemWindows="true" 只有一个View会生效。

为根布局设置 android:fitsSystemWindows="true" ,同时为了方便观察,给根布局设置一个灰色背景:

可以看到已经适配了软键盘,但顶部toolbar区域也显示了根布局的灰色背景,显然默认实现满足不了我们的需求。

解决方式有很多,这里介绍两种比较优雅的方式。

首先需要为Toolbar也设置 android:fitsSystemWindows="true"

达到了预期效果。

自定义根布局

自定义toolbar

两种方法实际上是等价,不过显然还是第一种方式更友好,只需要设置一个listener就能搞定,但因为api版本限制,所以很多情况下还是要使用第二种方式。

如果覆写了 fitSystemWindows(insets) 或者 onApplyWindowInsets(WindowInsets) ,覆写方法中不调用对应的super方法,则不需要设置 setFitsSystemWindows(true) 或者 android:fitsSystemWindows="true" 。

原因如下:

1、建立父级页面,首先建立一个父级页面parenthtml,代码如图,一个pop函数方法,一个链接到childhtml的iframe标签;

2、建立子页面,再新建一个childhtml页面,如图,展示一个id=link的div标签,和link的点击事件,因为是调用父级方法,所以需要用到windowparentpop()方法。

3、预览页面,预览页面,可明显看到parenthtml里面的iframe框架,指向的就是child子页面

4、错误提示,点击页面中“调用父级pop方法”的文字链,会提示错误,这是因为没配置好域名等相关设置。

5、站点配置,打开iis,右键iframe文件夹——“管理文件夹”——“浏览”;即可打开本地测试地址;(如小伙伴没配置iis,需要先配置iis建立站点)

6、成功调用父级方法,再次点击“调用父级pop方法”的文字链,即可成功d出提示。

以上就是关于vb.net中如何利用api函数获取网页源代码全部的内容,包括:vb.net中如何利用api函数获取网页源代码、jquery,iframe,如何在父窗口监听,子窗口发生改变时,父窗口获取子窗口的值、jquery 在父页面中如何获取子页面中的对象等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9873087.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存