如何在对象字段内发生更改时提醒用户

时间:2012-10-05 09:43:04

标签: javascript object html field alert

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

我正试图检测对象内部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>

我想通过提醒或使用图像来提醒用户对象内部是否有变化。

我有什么方法可以实现这个目标吗?

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

2 个答案:

答案 0 :(得分:0)

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

您可以使用jQuery插件Mutation Events plugin for jQuery。见thread

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

jsfiddle

答案 1 :(得分:0)

您必须在通过用户交互时检测更改,例如click,mouseover,mousedown等...然后您可以附加一个函数,以查看其属性或其中的任何内容是否发生变化。

//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()
}