`

Js动态监听listen dom变化(支持WebView)并作出处理

    博客分类:
  • js
阅读更多
// Firefox和Chrome早期版本中带有前缀
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver

// 选择目标节点
var target = document.querySelector('#some-id');
 
// 创建观察者对象
var observer = new MutationObserver(function(mutations) {
  mutations.forEach(function(mutation) {
    console.log(mutation.type);
  });    
});
 
// 配置观察选项:
var config = { attributes: true, childList: true, characterData: true }
 
// 传入目标节点和观察选项
observer.observe(target, config);
 
// 随后,你还可以停止观察
observer.disconnect();

 

实例方法

void observeNode target, optional MutationObserverInit options );
void disconnect();
Array takeRecords();

MutationObserverInit

MutationObserverInit是一个用来配置观察者对象行为的对象,该对象可以拥有下面这些属性:

注:  childListattributes, 或者characterData三个属性中必须至少有一个为true.否则,会抛出异常"An invalid or illegal string was specified".
属性 描述
childList 如果需要观察目标节点的子节点(新增了某个子节点,或者移除了某个子节点),则设置为true.
attributes 如果需要观察目标节点的属性节点(新增或删除了某个属性,以及某个属性的属性值发生了变化),则设置为true.
characterData 如果目标节点为characterData节点(一种抽象接口,具体可以为文本节点,注释节点,以及处理指令节点)时,也要观察该节点的文本内容是否发生变化,则设置为true.
subtree 除了目标节点,如果还需要观察目标节点的所有后代节点(观察目标节点所包含的整棵DOM树上的上述三种节点变化),则设置为true.
attributeOldValue

attributes属性已经设为true的前提下,如果需要将发生变化的属性节点之前的属性值记录下来(记录到下面MutationRecord对象的oldValue属性中),则设置为true.

characterDataOldValue characterData属性已经设为true的前提下,如果需要将发生变化的characterData节点之前的文本内容记录下来(记录到下面MutationRecord对象的oldValue属性中),则设置为true.
attributeFilter 一个属性名数组(不需要指定命名空间),只有该数组中包含的属性名发生变化时才会被观察到,其他名称的属性发生变化后会被忽略.

 

测试实例:

// Chrom  Console 监听 title变化
new MutationObserver(function(mutations) {
    console.log(document.title);
    mutations.forEach(function(mutation) {
        console.log(mutation.type);
    });
}).observe(document.querySelector('title'), { attributes: true, childList: true, characterData: true });

// 每当title节点变化,console以下结果
// 焦点之中的万能险:资金错配与被动加杠杆(标题)
// childList(mutation.type)

 

 

api:https://developer.mozilla.org/zh-CN/docs/Web/API/MutationObserver

 

更多实例应用扫码体验:

分享到:
评论

相关推荐

    Android中的webview监听每次URL变化实例

    首先,要监听WebView中URL的变化,可以通过设置自定义的WebViewClient,并重写onLoadResource方法。当WebView开始加载新的资源时,此方法会被调用。在onLoadResource中,可以获取到即将加载的URL,并进行日志记录或...

    webview 监听页面显示事件

    在提供的Demo中,可能包含了一个实际的示例代码,你可以参考并实践上述方法,以实现对WebView页面显示事件的监听。记住,良好的用户界面和体验是任何应用成功的关键,而有效地管理WebView的加载状态正是提升用户体验...

    Android Webview滑动监听

    为了监听Webview的滑动事件,我们需要自定义一个`WebViewClient`并重写其中的方法。在`WebViewClient`中,我们可以监听页面的加载状态,但默认情况下,Webview会处理所有的触摸事件。为了拦截滑动事件,我们需要覆盖...

    WebView2.DOM:与WebView2一起使用的C#DOM绑定

    WebView2.DOM 与WebView2一起使用的C#DOM绑定。 这仍然是Beta版软件,尚未准备好投入生产 介绍 使用此库,您可以直接在C#中控制WebView2的内容,并具有C#提供的类型安全的所有优点。 例如,您可以这样做: ...

    WinForm下WebView2实现JS与C#交互Demo

    为了接收JavaScript的postMessage,我们需要监听`WebMessageReceived`事件,然后在事件处理程序中解析接收到的消息并调用相应的C#方法: ```csharp private async void WebView2_CoreWebView2/WebMessageReceived...

    Android WebView中调用html外部文件并监听操作(源码)

    首先,我们需要在Android项目中添加WebView支持。在布局XML文件(例如activity_main.xml)中,添加WebView组件: ```xml <WebView android:id="@+id/webView" android:layout_width="match_parent" android:...

    监听加载结果并且带ProgressBar的WebView

    本文将深入探讨如何实现一个“监听加载结果并且带ProgressBar的WebView”,并教你如何利用它来加载网页。 首先,让我们了解WebView的基本用法。WebView是Android SDK中的一个类,位于`android.webkit`包下,它提供...

    android中webview加载本地页面,并处理js事件

    本示例“android中webview加载本地页面,并处理js事件”着重讲解如何利用`WebView`加载本地HTML页面,并通过JavaScript Interface与Java代码进行交互,同时在HTML中动态生成组件如`button`。 1. **WebView基本使用**...

    Android通过JS在线用webview加载PDF文件(无限放大版本)

    至此,你已经成功实现了Android Webview加载在线PDF文件并支持无限放大。需要注意的是,由于Webview是在浏览器环境中运行,所以性能可能受设备硬件限制,特别是对于大型或复杂的PDF文件。因此,优化Webview性能,如...

    使用webview加载本地html页面,并处理html页面中的javascript事件

    接下来,为了使WebView能够执行JavaScript代码并处理JavaScript事件,我们需要启用JavaScript支持。我们可以调用`WebSettings`类的`setJavaScriptEnabled()`方法: ```java WebSettings settings = webView....

    WebView实现JS效果和a标签点击事件

    综上所述,通过WebView我们可以轻松地在Android应用中展示网页内容,同时利用JavaScript和Java的交互实现各种动态效果和用户交互。在这个案例中,我们学习了如何显示Toast消息以及处理a标签的点击事件,这只是一个...

    鸿蒙webview的使用和JS交互.zip

    例如,为了开启JavaScript支持,需要在Webview初始化后调用: ```java webView.getSettings().setJavaScriptEnabled(true); ``` 3. **加载网页** Webview可以加载本地资源或远程URL。上述代码中已展示了如何...

    多个Frament内嵌套WebView以及返回键监听(附带底部Menu的SelectUI变化)

    通过合理使用`WebView`和`Fragment`,开发者可以实现类似淘宝等电商平台的复杂交互,而返回键监听和底部菜单的SelectUI变化则是提升用户体验的关键部分。对于想要学习Android开发或者想要构建类似功能的开发者来说,...

    webview加载html,播放音视频,响应js事件

    为了使WebView能够响应JavaScript事件,我们需要开启JavaScript支持,通过`setJavaScriptEnabled(true)`。然后,可以使用`addJavascriptInterface()`方法在Java代码中创建一个对象,这个对象的方法可以在JavaScript...

    WebView加载失败错误处理

    当WebView加载失败时,我们可以监听`WebResourceError`事件。通过实现`WebViewClient`的`onReceivedError()`或`onReceivedHttpError()`方法,我们可以在加载失败时执行自定义操作: ```java webView....

    实例详解Android Webview拦截ajax请求

    但是,在此强烈推荐一下 DSBridge,它是一个使用非常简单并支持同步的跨平台 JavaScript Bridge,最关键的是,DSBridge 的 demo 中就有接收处理 Fly.js 转发的 HTTP 请求的示例,并且给出了 OkHttp 的实现,并且,...

    (uniapp框架)手动封装webview页面与App交互sdk

    例如,App可以调用`plus.webview.currentWebview().send`发送消息,Webview页面则通过监听`plus.runtime.message`事件来接收并处理这些消息。 3. **构建JSSDK**:为了让H5页面更方便地调用原生功能,我们可以构建一...

    webview里面的js下拉刷新

    它可能会监听用户的滚动事件,当达到一定阈值时触发刷新操作,并与WebView的Java层进行通信。 3. js:这个文件名可能是其他JavaScript文件的集合,可能包含了与WebView交互的通用函数或者辅助库。 实现JS下拉刷新的...

    安卓浏览器WebViewJSHTML5相关-监听加载结果并且带ProgressBar的WebView直接调用里面的方法进行加载网页.rar

    直接调用里面的方法进行加载网页.rar”显然是一个示例项目,旨在展示如何在Android的WebView中集成进度条(ProgressBar)并监听网页加载的状态,以及如何直接调用JavaScript方法。下面将详细解释这些知识点。 1. **...

    webview 修改字体颜色大小背景 js实现

    在这个项目中,开发者可能创建了一个简单的Webview应用,并编写了一些JavaScript代码来演示如何动态改变字体颜色、大小和背景色。 总结: 通过JavaScript与Webview的交互,我们可以灵活地控制Webview中显示的内容...

Global site tag (gtag.js) - Google Analytics