Javascript 如何在母版页和站点页之间进行通信?
我有一个SharePoint母版页,在母版页中,我尝试从列表中检索一些数据,并在使用我前面提到的母版页的网站页面中显示它们 但问题是,当我试图将在母版页中检索到的数据存储到隐藏字段时,我无法获取最新更新的数据。我没有使用隐藏字段,而是尝试使用cookie(一种jquery插件)来存储数据并将其保存到站点页面中。但是我也不能得到最新的数据 最后,我发现了一个问题:站点页面的Javascript 如何在母版页和站点页之间进行通信?,javascript,sharepoint-2010,Javascript,Sharepoint 2010,我有一个SharePoint母版页,在母版页中,我尝试从列表中检索一些数据,并在使用我前面提到的母版页的网站页面中显示它们 但问题是,当我试图将在母版页中检索到的数据存储到隐藏字段时,我无法获取最新更新的数据。我没有使用隐藏字段,而是尝试使用cookie(一种jquery插件)来存储数据并将其保存到站点页面中。但是我也不能得到最新的数据 最后,我发现了一个问题:站点页面的document.ready()方法是在母版页的document.ready()方法之前调用的,因此即使页面发回,我也总是获取
document.ready()
方法是在母版页的document.ready()
方法之前调用的,因此即使页面发回,我也总是获取旧数据
在母版页和站点页之间有更好的沟通方式吗
或者是否有任何方法确保在站点页面的document.ready()之前调用母版页的document.ready()方法
我发现了一种解决这个问题的丑陋方法:我使用
setTimeout(“getTabTips()”,1000)
使站点页面的document.ready()
在母版页之后调用。但实际上,它的工作并不完美!我真的很想为这个问题找到一个漂亮的答案,请帮帮我?我有一个类似的问题,经过一些研究,我得出了相同的结论:使用cookies。我将它包装在一个名为LocalConnection
的小类中:
LocalConnection使用回调,因此其语法应该非常熟悉。因为它使用回调,所以您甚至可以设置一个回调来告诉master其他页面已经准备好了
掌握
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时触发,因此主控可以“触发事件”,接收者页面将在它们打开时触发事件。我使用
setTimeout()
延迟调用站点页面的document.ready()
,问题就消失了。但它的效果不是很好,甚至有点笨拙。所以我想在这里找到一个更好的方法…我上面使用LocalConnection的例子会告诉你的母版页你的子页面准备好了。你试过了吗?它真的很漂亮。我将在我公司的sharepoint项目中使用它。这是百万分之一。