2012-04-11 9 views
0

Es gibt eine externe Funktion GoSearch, die in einerÜberschreibung Javascript-Funktion lokale Variable

Search.js JavaScript-Datei ist vorhanden Wie der privaten/lokaler Variable (b) von GoSearch Funktion außer Kraft zu setzen. Beispiel Ändern Sie die Variable b = "?" "Diese Seite cs = & u = http: //google.com" b =

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 

}

Antwort

0

Der schnellste Weg, die Sie dies tun können, ist Link nicht auf die externe Datei direkt. Laden Sie Ihre Version der Datei herunter, ändern Sie, was Sie benötigen, und versehen Sie sie dann mit Ihren Seiten.

Sie können sogar so weit gehen, um die Datei im laufenden Betrieb auf Ihren Server zu laden, sie zu modifizieren und an die anfordernde Seite zu senden.

+0

Diese Datei ist werkzeugspezifisch ich kippe behalte eine lokale Kopie. Auch in Zukunft, wenn eine Änderung oder Abstufung zum Tool meine lokale Kopie überschreiben wird. –

+0

Sie können die Datei von Ihrem serverseitigen Code abrufen, ändern und an den Browser senden. Ihre Seite greift also auf eine Seite auf Ihrem Server zu, die die Datei nur vom ursprünglichen Speicherort abruft, den Stream ändert und den Stream dann an den Browser sendet. – kemiller2002

1

Sie können die GoSearch Funktion mit Ihren eigenen nur auf der Seite mit dem Suchfeld ersetzen - durch eine delegate control.

Erstellen Sie ein Benutzersteuerelement (ASCX), das JavaScript-Code auf die Seite mit der geänderten GoSearch-Funktion setzt. Erstellen Sie eine SP-Lösung mit einer Funktion, mit der das Steuerelement auf AdditionalPageHead gesetzt wird - auf jede Kopfzeile der Website oder Websitesammlung, in der Sie die Funktion aktivieren.

Überprüfen Sie, wie die search.js auf Ihrer Seite geladen wird. Wenn es nicht direkt in der Seitenkopf erfolgt aber verzögert, würden Sie den GoSearch Ersatz ausführen müssen dynamisch nach der search.js geladen wird:

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

--- Ferda