javascript - 如何在母版页和站点页面之间进行通信?

标签 javascript sharepoint-2010

我有一个 SharePoint 母版页,在母版页中,我尝试从列表中检索一些数据,并将它们显示在使用我之前提到的母版页的网站页面中。

但问题是,当我尝试将母版页中检索到的数据存储到隐藏字段时,我无法获取最新更新的数据。我没有使用隐藏字段,而是尝试使用 cookie(一种 jquery 插件)来存储数据并将它们获取到站点页面中。但我也无法获得最新数据。

最后发现问题:站点页面的document.ready()方法在母版页的document.ready()方法之前被调用,所以我即使页面回发,也始终获取旧数据。

我能否有更好的方式在母版页和站点页面之间进行通信?

或者是否有任何方法可以确保母版页的 document.ready() 方法在站点页面的 document.ready() 之前被调用?

我找到了一个丑陋的方法来解决这个问题:我使用 setTimeout("getTabTips()",1000); 来制作站点页面的 document.ready()在母版页之后调用。但实际上,它并没有那么完美!我真的很想为这个问题找到一个漂亮的答案,请帮帮我好吗?

最佳答案

我遇到了类似的问题,经过一番研究后我得出了相同的结论:使用 cookie。我将它包装在一个名为 LocalConnection 的小类中:https://github.com/jeremyharris/local_connection

LocalConnection 使用回调,因此它的语法应该非常熟悉。由于它使用回调,您甚至可以设置一个回调来告诉主控其他页面已准备就绪。

大师

var c = new LocalConnection({
  name: 'mycookiename'
});
// start listening
c.listen();
c.addCallback('ready', function(pageId) {
  // sub page ready
});

子页面

var c = new LocalConnection({
  name: 'mycookiename'
});
// start listening
c.listen();
$(document).ready(function() {
  c.send('ready', 'somePageId');
});

对于 LocalConnection,这并不是完全必要的。当接收者读取 cookie 时,事件会排队并触发,因此主控可以“触发事件”并且接收者页面会在它们打开时触发它们。

关于javascript - 如何在母版页和站点页面之间进行通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12948753/

相关文章:

javascript - 为什么 JavaScript Math 模块名称不遵循驼峰命名法?

javascript - Chrome 和 Node.js 中的全局范围

sharepoint - 将凭据传递给 Word Interop 以在 SharePoint 中打开文档

c# - 在 C# 中使用 Web 服务将用户添加到 SharePoint 组对我不起作用

sharepoint - 公司要我学习Sharepoint 2010 开发,我应该吗?

javascript - 收到错误 .append 不是函数

javascript - 在每次迭代中附加到 dom 或创建一个数组并输出?

javascript - 如何使用 d3.drag 处理散点图中的比例

sharepoint - 强制共享点要求身份验证

sharepoint-2010 - SharePoint 2010 和 SAML 2.0