2015-06-20 20 views
7

Sono nuovo a questo e sto creando una semplice applicazione in cui faccio clic su un pulsante e una notifica sul desktop dovrebbe essere visualizzato. Sto facendo questo in windows form c#notifica desktop utilizzando javascript in forma di finestra

l'errore è "NullReferenceException was unhandled

ho un pulsante Notify in form1 Ho provato questo:.

Form1.cs

 public Form1() 
      { 
       InitializeComponent(); 
       this.Load += new EventHandler(Form1_Load); 
       webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); 
       webBrowser1.ScriptErrorsSuppressed = true; 
      } 

      private void btnNotify_Click(object sender, EventArgs e) 
      { 
       webBrowser1.Document.InvokeScript("notifyMe"); 
      } 

private void Form1_Load(object sender, EventArgs e) 
     { 
      string CurrentDirectory = Directory.GetCurrentDirectory(); 
      webBrowser1.Navigate(Path.Combine(CurrentDirectory,"HTMLPage1.html")); 
     } 

     private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
     { 
      webBrowser1.ObjectForScripting = this; 

di codice per HTMLPage1. html:

<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta charset="utf-8" /> 
    <title></title> 
    <script language="javascript" type="text/javascript"> 
    document.addEventListener('DOMContentLoaded', function() { 
    if (Notification.permission !== "granted") 
    Notification.requestPermission(); 
    }); 

    function notifyMe() { 
    if (!Notification) { 
    alert('Desktop notifications not available in your browser. Try Chromium.'); 
    return; 
    } 

    if (Notification.permission !== "granted") 
    Notification.requestPermission(); 
    else { 
    var notification = new Notification('Notification title', { 
    icon: 'http://cdn.sstatic.net/stackexchange/img/logos/so/so-icon.png', 
    body: "Hey there! You've been notified!", 
    }); 

    notification.onclick = function() { 
    window.open("http://stackoverflow.com/a/13328397/1269037"); 
    }; 

    } 

    } 
    </script> 
</head> 
<body> 

</body> 
</html> 

anche se metto semplicemente alert("Hi") nella funzione notifyMe(), nient'altro. mostra ancora lo stesso errore.

ErrorMsg

+0

Dove esattamente si ottiene la NullReferenceException si prega di inviare la traccia dello stack – Christoph

+0

private void btnNotify_Click (object sender, EventArgs e) { webBrowser1.Document.InvokeScript' ("NotifyMe") '; }?. @christoph –

+0

bisogno di aiuto al più presto –

risposta

0

Dovete mettere il codice HTML e script nella directory di debug se non vengono inseriti automaticamente. Quello è dove GetCurrentDirectory() colpisce.

1

Ho cercato il tuo codice .. si dovrebbe usare

document.attachEvent('DOMContentLoaded', function() {.. 

Invece di

document.addEventListener(".. 

che ha lavorato da qui ... Per saperne di più su di esso qui https://stackoverflow.com/a/1695383/4155741

si dovrebbe anche rimuovere quella virgola alla fine di .. corpo: "Ehilà! Sei stato avvisato!", come evitare che lo script da essere compilato.

+0

ancora non funziona .. :( –

+0

mhh mi chiedo !! rimuovere 'webBrowser1.ScriptErrorsSuppressed = true;' – konzo

+0

riceverai un prompt che mostra quale linea ha un problema, dopo aver risolto tutto nel tuo codice ho ancora ottenuto che "Notifica" non è definita, quindi supponendo che tu l'abbia definita ** altrove ** ho sostituito il blocco funzione con un avviso, che modo che sapevo che la funzione è stata richiamata sul pulsante clic. ricorda qualsiasi errore nello script o l'esecuzione di una fuction fallita causerà il 'NullReferenceException' durante il richiamo. – konzo

Problemi correlati