情况如下 - 有一个页面A.aspx,它有一个指向另一个页面B.aspx的超链接 我想在有人点击A.aspx中的超链接并且在B.aspx加载之后运行一些javascript但是我不想手动将这个javascript添加到B.aspx?
这方面的背景如下─ 在sharepoint网站集中,所有页面都使用母版页,但可能有一些页面是独立的,并且这些页面不使用母版页。任务是将javascript添加到站点中的每个页面(独立和常规)。所以我将这个javascript添加到母版页,但由于这些独立页面不使用母版页,因此他们没有加载javascript。情况是一些常规sharepoint页面具有指向这些独立页面的超链接,因此当有人点击常规sharepoint页面上的超链接时,将加载独立页面。由于有很多独立页面,我不想触摸它们,我想是否有任何方法在加载后在这些页面上执行javascript(由于用户点击常规sharepoint上的超链接页面)?
答案 0 :(得分:1)
我想在有人点击A.aspx中的超链接并且在B.aspx加载之后运行一些javascript但是我不想手动将此javascript添加到B.aspx
你不能这样做,不。 (并非没有要求每个人都安装了浏览器扩展程序。)我担心这是不可接受的,如果独立页面已经没有加载的脚本,您可以将这些新代码添加到,#&# 39; ll必须修改每个独立页面以包含新脚本。
我刚刚检查过 - 超链接就像这个
<a href="javascript:void(0);" onclick="OpenPopUpPage('B.aspx?ItemID=65','',500,350);">test link</a>
他们似乎正在使用OpenPopUpPage
完全不同的东西。 如果 OpenPopUpPage
正在使用window.open
,而A.aspx
页面在B.aspx
打开时仍然存在,则A.aspx
中的代码可能会出现{1}}在B.aspx
页面打开时执行操作(假设它们位于相同的来源,可能是您的情况)。
您需要找到OpenPopUpPage
的来源并找到对window.open
的调用,在结果窗口(DOMContentLoaded
或最坏情况下{{{load
上挂钩事件1}}),然后在事件处理程序中对页面进行修改:
var url = "B.aspx";
var wnd = window.open(url);
checkChildReady();
function checkChildReady() {
if (wnd.document && String(wnd.document.location).indexOf(url) != -1) {
if (wnd.document.readyState != "loading") {
windowReady();
} else {
wnd.document.addEventListener("DOMContentLoaded", childReady, false);
}
}
}
function childReady() {
// Do your stuff here
}