derdon: diverses zu javascript

Beitrag lesen

so da bin ich wieder

mit evaluate meine ich natürlich document.evaluate(string path,...)
damit kann man sehr einfach auf einen bestimmten knoten zugreifen
aber jetzt unwichtig

Wichtig ist:
Etwas ähnliches wie dein variablen-zugriff hab ich bereits in funktion gesehen.
Und zwar bei 2 popups.

Aber meine zu öffnende Fenster sind normale tabs, bei dehnen es scheinbar nich funktioniert:
hier die zwei beteiligten GM-scrpits:
das erste wird im opener-fenster ausgeführt
das zweite im zu öffnenden fenster
// ==UserScript==
// @name            TFsuche_mod
// @namespace       TFsuche_mod
// @include

var win = null;
var win_TF = null;

var urls = ["211","241"];

var path_url=">>>eine bestimmte seite :)<<<";
var status_value ="nicht fertig";
var pos_at_win ="/HTML[1]/BODY[1]/DIV[5]/TABLE[2]/TBODY[1]/TR[1]/TD[1]";
var max_num_trans = 0;

function main() {

var i=0;
 var l= urls.length;

win = window.open(path_url+urls[i],"nix"+urls[i]);
 i++;
 window.setInterval(function() {if(i<5){
      GM_log("i<5");
      if(status_value=="Fertig"){
       GM_log("fertig");
       status_value = "nicht fertig";

if(max_num_trans>=1){
        max_num_trans = 0;
        GM_log("transen grösser");
        win = window.open(path_url+urls[i],"nix"+urls[i]);i++;
       }else{
        max_num_trans = 0;
        GM_log("transen kleiner");
        win.close();
        win = window.open(path_url+urls[i],"nix"+urls[i]);i++;
       }
      }

}
 },500);

};

window.addEventListener("keypress",
   function(event) {
     if (event.altKey && event.charCode == 'g'.charCodeAt(0)) {
       event.preventDefault();
       main();
     }
    },
    true);

//.user.js

// ==UserScript==
// @name            TF_mod
// @namespace       TF_mod
// @include
// @include

function do_platypus_script() {

var max_num_Trans =0;
for(var i=1;i<=17;){

try{
 var tmp = calc_add(i+2);
 if((typeof tmp)=="undefined") tmp =0;
 //GM_log("tmp:"+tmp+" max_num_Trans:"+max_num_Trans);

max_num_Trans = (tmp<max_num_Trans?max_num_Trans:tmp);
 }catch(e){
 i=18;
 }
 i=i+1;
}// >>>Zeile 87<<<
do_modify_html_it(window.document,document.evaluate('/HTML[1]/BODY[1]/DIV[5]/TABLE[2]/TBODY[1]/TR[1]/TD[1]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,/.*/,max_num_Trans+"("+window.opener+")",null);

// ***crosswindow-werteübergabe*** <<<---hier passiert ANGEBLICH was
try{
window.opener.max_num_trans = max_num_Trans;
GM_log("max_num_trans gesetzt");
}catch(e){
GM_log(e.message);
}
try{
window.opener.status_value = "Fertig";
GM_log("status_value gesetzt");
}catch(e){
GM_log(e.message);
}
};

window.addEventListener("load", function() { do_platypus_script() }, false);

function calc_add(tr) {
var ret = 0;
do_modify_html_it(window.document,document.evaluate('/HTML[1]/BODY[1]/DIV[5]/TABLE[2]/TBODY[1]/TR['+tr+']/TD[2]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,/'metall: /,' (',null);
do_modify_html_it(window.document,document.evaluate('/HTML[1]/BODY[1]/DIV[5]/TABLE[2]/TBODY[1]/TR['+tr+']/TD[2]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,/<br>Kristalle: /,'+',null);
do_modify_html_it(window.document,document.evaluate('/HTML[1]/BODY[1]/DIV[5]/TABLE[2]/TBODY[1]/TR['+tr+']/TD[2]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,/<br>omega: /,'+',null);
do_modify_html_it(window.document,document.evaluate('/HTML[1]/BODY[1]/DIV[5]/TABLE[2]/TBODY[1]/TR['+tr+']/TD[2]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,/style="border: medium none ; width: 12px;"&gt;/,')',null);
do_modify_html_it(window.document,document.evaluate('/HTML[1]/BODY[1]/DIV[5]/TABLE[2]/TBODY[1]/TR['+tr+']/TD[2]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,/`/g,'',null);

var num = ((document.evaluate('/HTML[1]/BODY[1]/DIV[5]/TABLE[2]/TBODY[1]/TR['+tr+']/TD[2]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue.innerHTML).match(/\d++\d++\d+/));
if(num!=null){
var tmp = num[0].match(/\d+/g);
var res = 0;

for(var i=0;i<3;i++){
 //GM_log('tr:'+tr+' i:'+i);
 res = res+parseInt(tmp[i]);
}

ret =((((res-150000)/350000)<1)?0:((res-150000)/350000));

if(ret>0){
do_modify_html_it(window.document,document.evaluate('/HTML[1]/BODY[1]/DIV[5]/TABLE[2]/TBODY[1]/TR['+tr+']/TD[2]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,/\d++\d++\d+/,ret,null);
}else{
do_modify_html_it(window.document,document.evaluate('/HTML[1]/BODY[1]/DIV[5]/TABLE[2]/TBODY[1]/TR['+tr+']/TD[2]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,/(\d++\d++\d+)/,'',null);
}

return ret;
}
};

function do_modify_html_it(doc, element, match_re, replace_string) {
    match_re = new RegExp(match_re);
    if (element.innerHTML) {
element.innerHTML = element.innerHTML.replace(match_re, replace_string);
    };
};

//.user.js

in zeile 88 wird als Ausgabe "0([object XPCNativeWrapper [object Window]])" in die entsprechende tabelle geschrieben

und die nachfolgenden try-catch-blöcke werden auch augeführt

nur werden die globalen variablen
window.opener.max_num_trans
und
window.opener.status_value
scheinbar nicht verändert, denn der setInterval-Timer kommt nicht über das "if(i<5)" hinaus.

und die iframes kann ich ja deshalb nicht nutzen, weil das opener script erwartungsgemäß ~10-50 Fenster öffnen wird.
Das ist mit iframes(im gegensatz zu tabs) sehr unübersichtlich !und! nach allem was ich bisher gelesen habe, müssen nach jedem hinzufügen oder entfernen ALLE Inhalte wieder neugeladen werden.
Das geht gar nich!!!

ich hoffe der code gibt jetzt etwas mehr einblick in das problem.

hopeful waiting derdon

PS:@struppi ich hab keinen schimmer von ajax .
vllt kennst du ja ne Seite mit einen fehlerfreien/schnellen/umfassenden Tutorial und gutem Supportforum.
Ich hab nichts entsprechendes gefunden