2012-04-11 133 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