是否可以在页面上执行一些javascript而无需手动将其添加到页面

情况如下 – 有一个页面A.aspx,它有一个指向另一个页面B.aspx的超链接
我想在有人点击A.aspx中的超链接并且在B.aspx加载之后运行一些javascript但是我不想手动将这个javascript添加到B.aspx?

背景如下 –
在sharepoint网站集中,所有页面都使用母版页,但可能有一些页面是独立的,并且这些页面不使用母版页.任务是将javascript添加到站点中的每个页面(独立和常规).所以我将这个javascript添加到母版页,但由于这些独立页面不使用母版页,因此他们没有加载javascript.情况是一些常规sharepoint页面具有指向这些独立页面的超链接,因此当有人点击常规sharepoint页面上的超链接时,将加载独立页面.由于有很多独立页面,我不想触摸它们,我想是否有任何方法在加载后在这些页面上执行javascript(由于用户点击常规sharepoint上的超链接页面)?

最佳答案

I want to run some javascript after someone clicks on the hyperlink in A.aspx and after B.aspx loads BUT I do not want to manually add this javascript to B.aspx

你做不到,不. (并非没有要求每个人都安装了浏览器扩展.)我担心这是不可接受的,如果独立页面还没有加载的脚本,你可以添加这些新代码,你将不得不修改每个独立页面都包含新脚本.

I checked just now – the hyperlinks are like this <a href="javascript:void(0);" onclick="OpenPopUpPage('B.aspx?ItemID=65','',500,350);">test link</a> they seem to be using OpenPopUpPage

那是完全不同的事情.如果OpenPopUpPage使用window.open,并且A.aspx页面在B.aspx打开时粘在一起,则A.aspx中的代码可能会在打开时使用B.aspx页面执行操作(假设它们位于相同的起源,可能是他们在你的情况下).

您需要找到OpenPopUpPage的源并找到它对window.open的调用,在生成的窗口(DOMContentLoaded或最坏的情况下,加载)上挂钩事件,然后在事件处理程序中对页面进行修改:

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
}

转载注明原文:是否可以在页面上执行一些javascript而无需手动将其添加到页面 - 代码日志