浏览器选项在新选项卡中打开链接

时间:2017-06-13 15:33:51

标签: javascript

我有用于编辑的操作按钮,当我右键单击时,没有选项“在新标签页中打开”。 这是我的代码:

function actionsTemplateConversion(data) {
    if (data != null){
        if (canEdit){
                row += '<a id="edit" title="${editTr}" onclick="edit(event);"></a>';
            }
            return row;
        }
    }

function edit(event) {
    table = $('#table').data();
    var dataItem = table.dataItem($(event.currentTarget).closest("tr"));

    window.location = "users/"+dataItem.id+"/editUser.html?id="+"${id}"+"&name="+"${name}";
    }

我尝试使用href而不是onclick并将此链接从edit()函数放入href中,然后使用我获取选项在新选项卡中打开以进行右键单击,但也存在问题,因为如果有单个qoutes in这个名字比因为那个qoutes而闻名。所以只有这个功能。 我也试过这个window.location.href,但它不起作用。 在window.location旁边打开链接还有其他选项吗?

2 个答案:

答案 0 :(得分:0)

您可以定位锚标记,这会导致浏览器打开新标签<a target="_blank" href=""/>

OR

if(user)
 window.open(encodeURI('url'), '_blank');
else
window.open(encodeURI('url'));

如果名称中的引号尝试对其进行编码 https://www.w3schools.com/TAGS/ref_urlencode.asp

答案 1 :(得分:0)

<a id="edit" title="${editTr}" onclick="edit(event);"></a>

这不是一个链接。链接必须具有href属性。没有一个,当您单击它或在新选项卡中打开时,没有要打开的URL。只有一个运行的JavaScript程序。

  

我尝试过使用href代替onclick

这就是解决方案

  

来自href中的edit()函数的链接以及我获得的选项在新选项卡中打开以进行右键单击,但也存在问题,因为如果名称中存在单个qoutes而不是因为qoutes而出现的所有内容

这是通过将字符串拼接在一起而不是使用DOM来生成HTML的问题。

你必须非常谨慎地逃避一切。

改用DOM。

因为你已经在使用jQuery了。这些方面的东西应该让你开始:

var url = "users/" + encodeURIComponent(dataItem.id) + "/editUser.html?id=" + encodeURIComponent("${id}") + "&name=" + encodeURIComponent("${name}");
var $link = jQuery("<a/>")
            .attr("href", url)
            .attr("title", "${editTr}")
            .attr("id", "edit") // Are you sure this is a UNIQUE id? Should this be a class instead?
            .on("click", edit);