mit Silverlight 3 ist HtmlPage.Fenster.Navigate-Methode zur Wiederverwendung eines bereits geöffneten browser-Fenster

Will ich mit einem externen browser-Fenster zu implementieren, die Vorschau-Funktion in einer silverlight-Anwendung. Es gibt eine Liste der Elemente, und immer, wenn der Benutzer klickt auf eines dieser Elemente, öffnen in einem separaten browser-Fenster (der Inhalt ist ein pdf Dokument, welches ist, warum wird Sie so behandelt, auch außerhalb der SL-app).

Nun, um dies zu erreichen, verwenden Sie einfach

HtmlPage.Window.Navigate(new Uri("http://www.bing.com"), "_blank");

welche gut funktioniert.

Nun mein client nicht, wie die Tatsache, dass jeder Klick öffnet ein neues browser-Fenster. Er würde gerne sehen, das browser-Fenster wiederverwendet werden jedes mal, wenn ein Element angeklickt wird. Also ging ich raus und versuchte die Umsetzung dieser:

Option 1 - Verwenden Sie die überladung der Methode Navigieren, etwa so:

HtmlPage.Window.Navigate(new Uri("http://www.bing.com"), "foo");

Ich war der Annahme, dass die Fenster wieder verwendet werden, wenn das gleiche Ziel-Parameterwert (foo) würde verwendet werden, die in nachfolgenden aufrufen.

Funktioniert dies nicht. Ich bekomme ein neues Fenster jedes mal.

Option 2 - Verwenden Sie die Popup-Methode auf die HtmlPage -

HtmlPage.PopupWindow(new Uri("http://www.bing.com"), "blah", new HtmlPopupWindowOptions());

Funktioniert das nicht. Ich bekomme ein neues Fenster jedes mal.

Option 3 - Get ein handle auf das geöffnete Fenster und die Wiederverwendung, das in nachfolgenden aufrufen

private HtmlWindow window;
private void navigationButton_Click(object sender, RoutedEventArgs e)
{
    if (window == null)
        window = HtmlPage.Window.Navigate(new Uri("http://www.bing.com"), "blah");
    else
        window.Navigate(new Uri("http://www.bing.com"), "blah");

    if (window == null)
        MessageBox.Show("it's null");
}

Funktioniert das nicht. Ich habe versucht, das gleiche für die Popup () - Methode und das Fenster ist null, jeder Zeit, so wird ein neues Fenster geöffnet, bei jedem Klick. Ich habe sowohl die EnableHtmlAccess und die IsPopupWindowAllowed Eigenschaften, und Sie true zurück, so, wie Sie sollten.

Option 4 - mit Eval-Methode ausführen einer benutzerdefinierten javascript -

private const string javascript = @"var popup = window.open('', 'blah') ; 
                                    if(popup.location != 'http://www.bing.com' ){
                                        popup.location = 'http://www.bing.com';
                                    }
                                    popup.focus();";

private void navigationButton_Click(object sender, RoutedEventArgs e)
{
    HtmlPage.Window.Eval(javascript);
}

Funktioniert das nicht. Ich bekomme ein neues Fenster jedes mal.

option 5 - Verwenden Sie CreateInstance zum ausführen von benutzerdefinierten javascript-Code auf der Seite

private void navigationButton_Click(object sender, RoutedEventArgs e)
{
    HtmlPage.Window.CreateInstance("thisIsPlainHell");
}

und in meiner aspx-ich habe

function thisIsPlainHell() {
    var popup = window.open('http://www.bing.com', 'blah');
}

Funktioniert das nicht. Ich bekomme ein neues Fenster jedes mal.

Mache ich etwas falsch? Ich bin definitiv kein javascript-Experte, so dass ich hoffe, es ist etwas, offensichtlich fehlt mir hier.

Cheers,
Phil

InformationsquelleAutor Phil | 2010-03-24
Schreibe einen Kommentar