4

我正在开发一个网页。网页上有一个超链接,称为“查看页面”。单击后,目标是在模式对话框中显示链接到页面。

这是我用来实现此目的的代码:

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title> Test</title>
        <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/themes/base/jquery-ui.css">
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/jquery-ui.min.js"></script>

        <script>
           function OpenModal() {
                $("#divModal").dialog({
                    autoOpen: false, modal: true, title: 'Modal', width: 'auto', height: 'auto'
                    , buttons: { "Cancel": function () { $(this).dialog("close"); } },
                }).dialog('open');
                return false;
            }
        </script>
    </head>

    <body>
        <a href="#" onclick="javascript:OpenModal();">View Page</a>
        <div style="display:none;" id="divModal">
            <iframe id="myIframe" src="SomeValidURL" width="1100" height="800" />
        </div>
    </body>
</html>

有没有一种方法可以实现类似于下面的功能,以允许用户右键单击“查看页面”链接,选择“在新选项卡中打开”或在新窗口中打开并在新选项卡或新窗口中打开SomeValidUrl?如果用户左键单击SomeValidUrl,则该页面应在模式对话框中打开。

4

3 回答 3

2

真的没有问题return false。其实你应该!如果您不这样做,return false否则preventDefault您的模式将打开,然后链接将触发,将您转发到另一个页面。

如果您希望这仅在用户通过链接单击其方式以在新窗口/选项卡中打开它时才起作用,那么您将SomeValidURL(在您的src属性中iframe)放置元素的href属性就足够了a.

此外,作为一般提示,避免内联绑定事件;宁可使用jQuery.on:它更灵活,它坚持关注点分离的最佳实践,它确实有助于处理混乱。

于 2013-03-14T15:49:05.290 回答
1

向链接添加一个类,然后使用它。

  $(".link").mousedown(function(event) {
        switch (event.which) {
            case 1:
                //modal code
                break;
            case 3:
                window.open("http://www.google.com", '_blank');
                break;
            default :
                window.open("http://www.google.com", '_blank');
                break;
        }
        return false;
    });

演示:http: //jsfiddle.net/calder12/Er7NN/

于 2013-03-14T16:02:42.500 回答
0

然后让链接正常使用,带有href属性:

<a href="SomeValidURL" onclick="javascript:OpenModal();">View Page</a>

尽管有return false,这应该仍然有效,因为click在右键单击并从生成的浏览器呈现的上下文菜单中选择“在新选项卡中打开”时不涉及您的处理程序。

于 2013-03-14T17:16:15.287 回答