0

如果对象字段内有任何更改,我如何提醒用户

我正在尝试检测对象内此 div 的更改

如果它是正常的代码将是这样的:

<div id="HeaderNewMessageIcon" class="BrosixContactNewMessage" style="display:none;">
<a href="javascript:;" class="HeaderNewMessageIcon" title="Unread messages"></a>
</div>

但如果有变化,它将如下所示:

<div id="HeaderNewMessageIcon" class="BrosixContactNewMessage" style="display: block; ">
<a href="javascript:;" class="HeaderNewMessageIcon" title="Unread messages: 1"></a>
</div>

如果对象内部发生变化,我想通过警报或使用图像来提醒用户。

我有什么办法可以做到这一点?

还有一件事,我无法访问对象内部的代码,我只能查看它,但不能编辑它。

4

2 回答 2

0

您必须在通过用户交互(例如单击、鼠标悬停、鼠标按下等)时检测更改...然后您可以附加一个函数以查看其属性或其中的任何内容是否发生更改。

//detect inputs change
$('#HeaderNewMessageIcon').find(':input').change(function(){ alert(...)});

//detect attributes change
$('#HeaderNewMessageIcon').click(function(){
   detectChange(this);
});

至于 detectChange 工作,您必须在页面刚刚加载时保存属性

var attrs = $('#HeaderNewMessageIcon').get(0).attributes;

function detectChange(obj){
    //pseudo-code, you need to find a function on the web to commpare 2 objetcs
    if (obj.attributes === attrs){
        alert(...);
    }

    //the same comparison for the children elements $(obj).children()
}
于 2012-10-05T10:19:35.103 回答
0

我相信一定有一些 JavaScript 代码可以改变你的 html,你可以从那里调用你的方法。其他方式你可以使用 setInterval。

您可以 为 jQuery 使用 jQuery 插件 Mutation Events 插件 。见线程

    var a = document.getElementsByClassName('HeaderNewMessageIcon')[0];
var oldTitle = a.title;
setInterval(function(){
    if(a.title !== oldTitle){
          alert("Title change");  
        oldTitle = a.title;
    }
},100);

jsfiddle

于 2012-10-05T10:01:55.830 回答