2012-04-11 82 views
0

有一个外部函数GoSearch存在一个javascript文件中search.js重写javascript函数局部变量

如何覆盖GoSearch函数的private/local变量(b)。 示例修改变量b =“?”以B = “CS =本网站& 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 

}

回答

0

,你可以做到这一点的最快方式,就是不要链接到外部直接文件。下载您的文件版本,更改您需要的内容,然后将其提供给您的网页。

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

+0

这个文件是具体的我不能工具保留本地副本。同样在将来,如果对该工具进行任何修改或渐变将覆盖我的本地副本。 – 2012-04-11 17:32:45

+0

您可以从服务器端代码抓取文件,对其进行修改并将其推送到浏览器。因此,您的页面访问服务器上的一个页面,该页面只是从原始位置抓取文件,修改流并将流推送至浏览器。 – kemiller2002 2012-04-11 17:34:38

1

您可以使用搜索框将您自己的GoSearch功能替换为delegate control

创建一个用户控件(ASCX),该页面上的JavaScript代码使用修改后的GoSearch函数。使用一项功能创建SP解决方案,该功能会将控件置于AdditionalPageHead - 激活该功能的网站或网站集上的每个页面头。

查看search.js如何载入您的页面。如果是在页面头部不会直接做,但延迟,你必须执行GoSearch更换search.js被加载后动态:

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

--- Ferda