0

javascript 文件 search.js 中存在一个外部函数 GoSearch

如何覆盖 GoSearch 函数的私有/局部变量 (b)。示例修改变量 b="?" 到 b="?cs=This Site&u=http://google.com"

GoSearch(q, G, p, E, r, F, D, C, B, j, n, z, y, x, w, A, l, v) {
ULShpi: ;
try {
    AddSearchoptionsToQuery()
} catch (H) {}
var i = document.forms[0].elements[G].value;
i = i.replace(/\s*$/, "");
var u = "1";
if (q) u = document.forms[0].elements[q].Value;
if (i == "" || u == "0") {
    alert(v);
    if (null != event) {
        event.returnValue = false;
        return false
    } else return
}
var b = "?";
if (suggestedQuery) b += "sq=1&";
b += "k=" + encodeURIComponent(i);
for (var k = ["rm", "rm1", "rm2", "rm3", "rm4", "rm5", "ql", "ql1", "ql2", "ql3", "ql4", "ql5", "v", "v1", "v2", "v3", "v4", "v5", "hs", "hs1", "hs2", "hs3", "hs4", "hs5"], h = 0; h < k.length; h++) {
    var m = GetUrlKeyValue(k[h], true);
    if (m && m.length > 0) b += "&" + k[h] + "=" + m
}
if (l != null && l != "") b += "&r=" + encodeURIComponent(l);
if (null != p) {
    var t = document.forms[0].elements[p].value;
    if (E) b += canonicalizedUtf8FromUnicode(" " + t);
    else b += "&a=" + canonicalizedUtf8FromUnicode(" " + t)
}
var a = null,
    c = "",
    d = "",
    o = null != j;
if (o) {
    c = j;
    d = j
} else if (r) {
    a = document.forms[0].elements[F];
    c = a.options[a.selectedIndex].getAttribute("scope");
    d = a.options[a.selectedIndex].value
}
if (r || o) {
    var f = "",
        g = "",
        e = false;
    if (d == z) {
        f = d;
        c = "";
        g = document.forms[0].elements[D].value;
        e = true
    }
    if (d == y) {
        f = d;
        c = "";
        g = document.forms[0].elements[C].value;
        e = true
    }
    if (d == x) {
        f = c;
        c = "";
        g = document.forms[0].elements[B].value;
        e = true
    }
    if (c == w) {
        c = a.options[a.selectedIndex].value;
        e = true
    }
    if (e) n = A;
    if (c != "") {
        b += "&s=" + encodeURIComponent(c);
        if (a.options[a.selectedIndex].value != "" && !e) n = a.options[a.selectedIndex].value
    }
    if (f != "") b += "&cs=" + encodeURIComponent(f);
    if (g != "") b += "&u=" + encodeURIComponent(g)
}
var I = document.forms[0];
try {
    external.AutoCompleteSaveForm(I)
} catch (s) {}
window.location = n + b;
try {
    if (null != event) event.returnValue = false
} catch (s) {}
return

}

4

2 回答 2

1

GoSearch您可以在带有搜索框的页面上用您自己的功能替换该功能 - 通过委托控件

创建一个用户控件 (ASCX),将 JavaScript 代码放在具有修改GoSearch功能的页面上。创建一个 SP 解决方案,该解决方案具有将控件放置到AdditionalPageHead您激活该功能的网站或网站集上的每个页眉的功能。

查看如何search.js在您的页面上加载。如果不是直接在页头中完成而是延迟,则必须在加载GoSearch后动态执行替换:search.js

function ReplaceGoSearch {
    GoSearch = function(...) {
        ...
    };
}
ExecuteOrDelayUntilScriptLoaded(ReplaceGoSearch, "search.js");

--- 费尔达

于 2012-04-11T21:28:06.117 回答
0

最快的方法是不要直接链接到外部文件。下载您的文件版本,更改您需要的内容,然后将其提供给您的页面。

您甚至可以将文件即时下载到您的服务器,对其进行修改,然后将其推送到请求页面。

于 2012-04-11T17:28:34.293 回答