2016-05-13 7 views
1

Ich arbeite an einem Tool (mit node.js gebaut), um einige Werte einer Webseite für jede Anfrage zu ändern.Gibt es eine Möglichkeit, das Argument einer Funktion in JavaScript statisch auszuwerten?

Als Beispiel, wenn mein HTML-Dokument als ein Element wie folgt aus:

<div id="mydiv"> This is a div </div> 

Mein Werkzeug es aktualisiert wird so etwas in einem bestimmten Moment zu sein:

<div id="aka67213h82h7"> This is a div </div> 

Der Wert ist wird immer anders sein. Es ist zufällig. Mein Ziel ist es, zu verhindern, dass andere Personen diese Attribute verwenden, um Informationen von meiner Webseite zu manipulieren oder zu extrahieren.

Jetzt, um alles in Ordnung zu halten, muss ich auch CSS-Dateien und JS-Dateien aktualisieren. Ich gehe davon aus, dass eine Website nur HTML-, CSS- und JavaScript-Code haben wird. CSS-Dateien sind kein Problem, und ich handle mit ihnen. Aber JS-Skripte sind eine andere Geschichte ..

Wenn ich diese Zeile Code haben:

var element = document.getElementById("mydiv"); 

Ich möchte diese Zeile aktualisieren und "mydiv" zu "aka67213h82h7" ändern. Das ist möglich und ich mache das. Aber wenn wir den Code neu zu schreiben:

var idOfElement = "mydiv"; 
var element = document.getElementById(idOfElement); 

Das einzige, was ich extrahieren kann, ist, dass idOfElement eine Variable, die den Wert enthält, ich aktualisieren möchten. Dies ist nur ein einfaches Beispiel, da das Argument auch performFunction() und so weiter sein könnte ..

Wenn das Argument der Funktion wie getElementById() ist ein wörtliches Ich ist in der Lage zu tun, was ich will. Aber wenn es ein Identifier oder ein Binary Expression, usw. ist, wird dies mein Problem. Also, wie kann ich mich in diesem Moment über den Wert dieser Art von Argumenten sicher sein?

+0

Ist es immer anders oder ist es zufällig? Die beiden schließen sich nicht gegenseitig aus – Jamiec

+3

* Mein Ziel ist es, zu verhindern, dass andere Personen diese Attribute verwenden, um Informationen von meiner Webseite zu manipulieren oder zu extrahieren. * Ich kann Ihr Ziel hier wirklich nicht verstehen. Wenn Sie eine Webseite anzeigen, geben Sie bereits alle Informationen dieser Seite frei. Zufälliges 'id' zu haben, verhindert wirklich nichts ... außer Bots vielleicht? – Chris

+0

Wenn Ihr Tool eine HTML-Datei aktualisieren kann, kann es nicht einfach nur die JS-Datei aktualisieren? –

Antwort

0

Wenn ich es richtig Sie Ihre ID mit aktualisieren können:

elements.id = 'randomValue'; 
+0

Aber jeder Mensch mit durchschnittlichen Prog.Skills weiß, wenn er nach einer E-Mail-Adresse fragt und überprüft Ihre ID für die Eingabe und es heißt "akkasdasd" weiß, wofür es verwendet wurde. – Opaldes

+0

Nein. Mein Problem ist nicht "Wie ändere ich die ID eines Elements" .. HTML war nur Kontext zu meiner Frage und ID war ein Beispiel. – rydeen

+0

_ "Nein. Mein Problem ist nicht" Wie man die ID eines Elements ändert "." _ Was ist das eigentliche Problem? Kannst du ein Stacksnippet erstellen, um es zu demonstrieren? – guest271314

0

Ein Ansatz, der jeden Aufruf document.getElementById() innerhalb script Element entspricht, ersetzt das id innerhalb script Element und Element selbst mit einem zufälligen Zeichenfolge erzeugt von URL.createObjectURL()

window.onload = function() { 
 
    var script = document.scripts[0]; 
 
    var ids = script.textContent.match(/document.getElementById\(.+\)/g); 
 
    var _oldids = ids.toString() 
 
       .replace(/document|\.getElementById|\(|\)|,/g, "") 
 
       .split(""); 
 
    var _newids = []; 
 
    _oldids.forEach(function(id) { 
 
    var _id = URL.createObjectURL(new Blob([])); 
 
    URL.revokeObjectURL(_id); 
 
    _id = _id.replace(/^blob\:.+\//g, ""); 
 
    _newids.push(_id); 
 
    script.textContent = script.textContent 
 
         .replace(new RegExp('"' + id + '"'), '"' + _id + '"'); 
 
    document.getElementById(id).id = _id; 
 
    }); 
 
    
 
    console.log(_oldids, _newids, document.documentElement.outerHTML); 
 
}
<div id="a">a</div> 
 
<div id="b">b</div> 
 
<div id="c">c</div> 
 
<script> 
 
    var a = "a"; 
 
    var b = "b"; 
 
    var c = "c"; 
 
    document.getElementById(a).style.color = "blue"; 
 
    document.getElementById(b).style.color = "red"; 
 
    document.getElementById(c).style.color = "green"; 
 
</script>

Verwandte Themen