【问题标题】:popup blocker is blocking popup while clicking on silverlight button or hyperlinkbutton弹出窗口阻止程序在单击 silverlight 按钮或超链接按钮时阻止弹出窗口
【发布时间】:2013-03-20 06:09:27
【问题描述】:

在我的 ViewModel 中,我正在准备动态 url,然后按如下方式调用它。

HtmlPage.Window.Navigate(new Uri(URL), "_blank");

但它不起作用,所以我尝试从 silverlight 调用 javascript,并在 javascript 内部调用了 window.open() 方法。代码是这样的:

HtmlPage.Window.Invoke("open_win", URL);

而Javascript函数open_win是这样的:

function open_win(param1) {
        var win = window.open(param1, 'ad', 'width=400,height=200,scrollbars=yes')
        win.focus();
    }

但它仅适用于 IE,所有其他浏览器都显示弹出窗口阻止程序。

我尝试了另一种解决方案来摆脱弹出窗口阻止程序 我创建了虚拟 html 按钮并在 open_win 函数中触发了它的点击,然后它也没有工作,但是当我点击 html 按钮时它工作正常。所以请帮我用silverlight按钮做同样的事情。

如果您有任何其他解决方案可以在没有弹出窗口阻止程序的情况下打开新的浏览器窗口,那么也建议我。

提前致谢。

【问题讨论】:

  • 弹出窗口阻止程序阻止弹出窗口的目的不是吗?在我看来,一切都按预期工作......除了 IE,它失败了。
  • 我同意。除非 IE 知道 Silverlight 的点击事件,否则它应该阻止新窗口的创建。
  • @nvoigt 同样适用于 aspx 页面。当我们单击 aspx 页面上的按钮时,弹出窗口阻止程序不会阻止弹出窗口,但是当我们对 silverlight 执行相同操作时,它会阻止。

标签: javascript silverlight browser cross-browser popup


【解决方案1】:

在 Javascript 中监听 Click 事件。

如果您使用 Silverlight 接收点击,浏览器不会知道发生了点击。它只是假设您的代码正在尝试打开一个新的浏览器。这就是您的新窗口被归类为弹出窗口的原因。

使用 Javascript 监听 DOM 点击事件。然后浏览器会尊重你的新窗口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    相关资源
    最近更新 更多