2017-04-16 3 views
0

Mein Ziel ist es, einen Wert a-d innerhalb des Arrays options in menu.html mit Greasemonkey-Erweiterung in Firefox zu ändern, aber mein Problem ist, dass das Element I/Zugang zu wählen bin versucht, wird als geladen Rahmen.Select-Element in einem Rahmen

Ich habe versucht, dieses Problem seit einiger Zeit zu lösen, und ich wäre sehr glücklich, wenn mir jemand helfen könnte.


ich haben zwei Dateien main.html und menu.html, deren Inhalt:

main.html (ist die Hauptseite)

<html> 

<head> 
    <meta http-equiv="Pragma" content="no-cache"> 

    <script language="javascript"> 
     document.writeln("<frameset rows='89,*,15' border='0' frameborder='0' framespacing='0'>"); 

     // here is the menu frame 
     document.writeln("<frame src='menu.html' name='menufrm' frameborder='no' border='0' scrolling='no' target='_self' marginwidth='0' marginheight='0' noresize>"); 

     document.writeln("</frameset>"); 

    </script> 

</head> 

</html> 

menu.html (geladen wird "durch" einen Rahmen)

<html> 

<head> 
    <meta http-equiv='Pragma' content='no-cache'> 

    <link rel=stylesheet href='stylemain.css' type='text/css'> 
    <script language='javascript' src='menuBcm.js'></script> 

    <base target="_self"> 
</head> 

<body class='mainMenuBody' topmargin="0" leftmargin="0" marginwidth="0" marginheight="0"> 

    <table border="0" cellpadding="0" cellspacing="0" height="1000"> 

     <tr> 
      <td class='menu' width="170" valign="top" align="left"> 

       <script language='javascript'> 
        var options = new Array('a', 
         'b', 
         'c'); 

        // ultimate goal is to change the value of a to d above before 
        // execution of the script below  

        createBcmMenu(options); // from menuBcm.js 
        initializeDocument(); 
       </script> 

      </td> 
     </tr> 

    </table> 
</body> 

</html> 

Wich aussieht so etwas wie dieses:

+----------------------------+ 
| main page (192.168.1.1) | 
|       | 
| +---------------------+ | 
| | frame (192.168.1.1) | | 
| +---------------------+ | 
|       | 
+----------------------------+ 

Greasemonkey-Skript:

// ==UserScript== 
// @name  a-to-d 
// @namespace namespace 
// @include  http://192.168.1.1/main.html 
// @include  http://192.168.1.1/menu.html 
// @version  1 
// @grant  none 
// @run-at  document-start 
// ==/UserScript== 

var newScript = `var options = new Array('d','b','c');` ; 

// somehow select that element below 
document.(!).innerHTML = newScript; // (!): somehow select script element in menu.html 
+2

Frames sind seit Jahren veraltet ... warum brauchen Sie Frames an erster Stelle? – charlietfl

+1

Vielen Dank für Ihren Kommentar. Ich bin nicht der Autor dieses ursprünglichen Codes und kann den Code zum Entfernen der Frames nicht ändern. – Clone

Antwort

2

Sie Rahmenfenster window.frames.menufrm

zugreifen können dann Dinge wie:

var frm = window.frames.menufrm;  
frm.options = ['d','b','c']; 
frm.createBcmMenu(options); 

keine Garantien, dass Aufruf die Funktion erneut funktioniert gut, aber Sie können nichts ändern, bevor dieser Frame geladen wurde und der ursprüngliche Funktionsaufruf bereits ausgeführt wurde

+0

Vielen Dank für Ihre Eingabe! Aber wenn ich den obigen Code ausführe, bekomme ich 'ReferenceError: options is not defined' – Clone

Verwandte Themen