我有一个div
<div id="test" class="test">From 0 to 0</div>
然后有一个函数替换div的内容
function divChange(aArg)
{
var sText = "From" + aArg[0] + "to" + aArg[1];
$("#test").html(sText);
}
我无法控制此功能,也无法控制html。我可以以某种方式获取div的文本使用javascript更改后(我在网站上运行greasemonkey)。请注意,div的内容可以与更改前的内容不同或相同。
更新:抱歉,我忘了提一下。首先我开始搜索,然后会有一个异步函数运行,在获取所有数据(时间取决于它使用的数据库)之后它会调用这个。所以我想要的是在搜索后不立即更改div之后获取数据,否则结果不会正确。
简单的逻辑: 我开始调用一个我无法控制的功能 它将在一个未知的时间内运行。 3.完成后,它会调用一个函数来改变div的内容。 我想在此刻捕捉内容。
答案 0 :(得分:2)
最基本的方法是不断轮询:
update table_name set roll_no = 'Z' where name='X' and age='Y'
更好的方法,假设在某个地方使用某种异步搜索函数调用此函数,将用自身的扩展版本替换链中的某些函数:
echo $this->Form->hidden('exchange_type');
echo $this->Form->input('exchange_type', array(
'disabled' => true,
// ...
));
答案 1 :(得分:1)
您应该可以使用MutationObserver
对象,例如:
// select the target node
var target = document.querySelector('#test');
// create an observer instance
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
// output the new contents of the element to browser console
if(mutation.type === 'characterData') {
console.log(mutation.target);
} else {
console.log(mutation.target.innerHTML);
}
});
});
// configuration of the observer:
var config = { childList: true, characterData: true };
// pass in the target node, as well as the observer options
observer.observe(target, config);
答案 2 :(得分:0)
你可以再次打电话
$("#test").html();
答案 3 :(得分:0)
您应该能够使用带有innerHTML或innerText的getElementById来获取div的内容,例如
document.getElementById('test').innerHTML;
//or
document.getElementById('test').innerText;
解释了两者之间的差异here。我建议使用innerHTML而不是innerText,但如果你无法控制用户使用的浏览器,因为innerHTML符合W3C标准。
答案 4 :(得分:0)
您可以使用
var $content = $("#text");
在$ content变量中,您可以访问div test的任何属性。
答案 5 :(得分:0)
如果你无法控制&#39; divChange&#39;功能,那么你可以做什么,但有一个解决方法。如果您确实可以控制该功能,则可以在内容发生变化时发出自定义事件并在代码中聆听它,但看到您无法做到这一点,您需要尝试这样的事情:
var text = $('#test').text(),
intervalId = setInterval(function(){
var newText = $('#test').text();
if (newText !== text){
// do something with the new value and make sure you clear the interval
clearInterval(intervalId);
}
}, 500);