2009-06-08 6 views
3

Je suis un débutant dans le monde Mac.Obtenir des informations de champ de texte sur la page Web chargée - Développement Mac OS X

Je dois créer une application capable d'extraire des informations saisies sur une page Web, à partir de champs de texte. Mon application chargera une page Web hébergée quelque part, et dans la page Web il y aura une série de champs de texte et un bouton de soumission. Une fois que le bouton est cliqué, je dois être capable de lire les informations saisies dans les champs de texte de cette page Web.

J'ai le code comme suit:

+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector 
{ 
// For security, you must explicitly allow a selector to be called from JavaScript. 

if (aSelector == @selector(showMessage:)) { 
    return NO; // i.e. showMessage: is NOT _excluded_ from scripting, so it can be called. 
} 

return YES; // disallow everything else 
} 

- (void)showMessage:(NSString *)message 
{ 
    // This method is called from the JavaScript "onClick" handler of the INPUT element 
    // in the HTML. This shows you how to have HTML form elements call Cocoa methods. 

    DOMDocument *myDOMDocument = [[webView mainFrame] DOMDocument];  // 3 
    DOMElement *contentTitle = [myDOMDocument getElementById:@"TexTest"]; // DOM 
    message = [[contentTitle firstChild] nodeValue];           // lines 

    NSRunAlertPanel(@"Message from JavaScript", message, nil, nil, nil); 
} 

Quand je lance l'application, et il arrive à NSRunAlertPanel, il ne veut pas exécuter plus loin.

Lorsque je commente les 3 lignes DOM, le NSRunAlertPanel affiche son message et je peux continuer.

Le code HTML ressemble à ceci:

<body> 
    <h1 id="contentTitle">Some kind of title</h1> 
    <div id="main_content"> 
    <p>Some content</p> 
    <p>Some more content</p> 
    </div> 
    <div> 
    <input id="TexTest" value=" " type="text"> 
    </div> 
    <div> 
    <input id="message_button" value="Show Message" onclick="window.AppController.showMessage_('Hello there...');" type="button"> 
    </div> 
</body> 

Toute personne en mesure d'aider à ce sujet?

Répondre

1

J'ai trouvé une solution à mon problème. La réponse est le changement de code suivant:

- (void)showMessage:(NSString *)message 
{ 
    // This method is called from the JavaScript "onClick" handler of the INPUT element 
    // in the HTML. This shows you how to have HTML form elements call Cocoa methods. 

    DOMHTMLDocument *myDOMDocument = [[webView mainFrame] DOMDocument]; 
    DOMHTMLElement *contentTitle = [myDOMDocument getElementById:@"TexTest"]; 
    message = [contentTitle value]; 

    NSRunAlertPanel(@"Message from JavaScript", message, nil, nil, nil); 
}