javascript - 在 JavaScript 函数中嵌套动态 AJAX 函数 - 并保持更新

标签 javascript ajax

我有 AJAX 代码

<!-- Body Code -->
Listeners: <span id="cc_stream_info_listeners"></span>

<!-- Footer Code -->   
<script type="text/javascript" src="http://mysite.com/system/streaminfo.js"></script>
<script type="text/javascript" src="http://mysite.com/js.php/radio/streaminfo/rnd0"></script>

返回在线广播流的动态听众计数。此代码工作正常,但 js 文件位于远程主机上。所以我真的不知道它们是如何工作的。

我希望我的其中一个页面的页面标题能够动态包含监听器计数。就像 Twitter 页面计算源中可用的新推文一样。

例如(5) My Dashboard | My Site Name其中数字是来自 AJAX 函数的动态监听器计数。

这是我到目前为止所拥有的。

<!-- START: PAGE TITLE LISTENER CONTENT -->
<script>
function updatetitle() {
  var txt1 = "(";
  var txt2 = "5";
  var txt3 = ") My Dashboard | My Site Name";
  var n = txt1.concat(txt2,txt3);
  document.title = n;
}
</script>

<script>
window.onload = function() {
  updatetitle();
};
</script>

只需将文本“5”替换为 <span id="cc_stream_info_listeners">不起作用。但至少我知道我的页面更新组件是正确的。因为它在纯文本中按预期工作。

如何合并这两个函数 - 以便动态更新监听器计数?

最佳答案

您可以使用 MutationObserver 来检查元素 #cc_stream_info_listeners 何时被修改:https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver

您选择一个要观察的节点。对于您的项目,您应该观察 cc_stream_info_listeners。然后,每当 dom 发生变化时,就会触发回调。这减少了 setInterval 对浏览器造成的压力,因为它仅在事件实际发生时调用。

根据文档修改:http://jsfiddle.net/E5Rrc/

    // select the target node
    var title_tag = document.querySelector('title');
    var cc_stream_info_listeners = document.querySelector('#cc_stream_info_listeners');

    // create an observer instance
    var observer = new MutationObserver(function(mutations) {
      mutations.forEach(function(mutation) {
          title_tag.innerHTML = '('+cc_stream_info_listeners.innerHTML+') My Dashboard | My Site Name';
      });    
    });

    // configuration of the observer:
    var config = { childList: true, characterData: true, subtree: true };

    // pass in the target node, as well as the observer options
    observer.observe(cc_stream_info_listeners, config);

    // this is just for testing, to show that it works.
    setInterval(function() {
        cc_stream_info_listeners.innerHTML++;
    }, 500);

关于javascript - 在 JavaScript 函数中嵌套动态 AJAX 函数 - 并保持更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18814756/

相关文章:

jquery - 415 不支持的媒体类型从 $.ajax 调用 WCF 服务

javascript - CORS - 服务器如何知道是否使用了 Jquery ajax 的 "withCredentials : true"?

javascript - 在没有 ASP.NET Ajax 的情况下回发后显示模式

javascript - 使用 codeigniter 进行多个 ajax 调用

javascript - 仅当这些消息存在时,如何在 primefaces 中显示带有 requiredMessages 的弹出窗口?

javascript - 为什么 Firefox 会忘记变量的值?调试解决方案?

javascript - 将 jvectormap 的中心从 EU 更改为 ASIA

javascript - 如何在coffeeScript中翻译Promise.try

javascript - wp 排队 js 脚本

jquery - 使用 AJAX 插入后在 Select2 中设置数据