我有用于编辑的操作按钮,当我右键单击时,没有选项“在新标签页中打开”。 这是我的代码:
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旁边打开链接还有其他选项吗?
答案 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);