2012-04-11 4 views
0

Il y a une GoSearch fonction externe qui est existe dans un fichier javascript search.jsvariable locale override javascript fonction

Comment passer outre la variable privée/locale (b) de la fonction GoSearch. Exemple Modifier la variable b = "?" à b = "cs = Ce 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 

}

Répondre

0

La façon la plus rapide que vous pouvez faire cela, est ne lie pas à l'extérieur fichier directement. Téléchargez votre version du fichier, modifiez ce dont vous avez besoin, puis diffusez-le sur vos pages.

Vous pouvez même aller si loin pour télécharger le fichier à la volée sur votre serveur, le modifier et l'expulser vers la page de requête.

+0

Ce fichier est un outil spécifique je ne peux pas Conservez une copie locale. Aussi à l'avenir si n'importe quelle modification ou up gradation à l'outil écrasera ma copie locale. –

+0

Vous pouvez récupérer le fichier à partir du code de votre serveur, le modifier et le pousser dans le navigateur. Ainsi, votre page accède à une page sur votre serveur qui saisit simplement le fichier à partir de l'emplacement d'origine, modifie le flux et pousse le flux vers le navigateur. – kemiller2002

1

Vous pouvez remplacer la fonction GoSearch par votre propre sur la page avec la zone de recherche - par un delegate control.

Créez un contrôle utilisateur (ASCX) qui met du code JavaScript sur la page avec la fonction GoSearch modifiée. Créez une solution SP avec une fonctionnalité qui placera le contrôle sur AdditionalPageHead - à chaque tête de page sur le site ou la collection de sites où vous activez la fonctionnalité.

Découvrez comment le search.js est chargé sur votre page. Si elle se fait pas directement dans la tête de la page, mais retardé, vous auriez à effectuer le remplacement GoSearch dynamiquement après la search.js est chargé:

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

--- Ferda