Ajax在div中加载页面内容,但在右键单击时保持“在新选项卡中打开”

时间:2013-10-17 15:31:25

标签: javascript ajax tabs right-click

我正在开发一个新网站,其中包含一个mysql数据库,可以对不同类别和子类别中的一系列项目进行排序。我创建了一个很酷的脚本,可以在div中动态加载类别(页面内容)的内容而无需重新加载页面。加载内容时,它还会更改地址栏中的网址,如果您从此网址重新加载网页,则会看到正确类别的内容。问题是我希望在每个浏览器提供的右侧clik中保持“在新选项卡中打开”,并且我找不到一种方法来获取它,因为内容是从javascript / ajax函数加载的。

我以为

<a href="javascript: liveresults('mycategory');">

将取代

<a onclick="liveresults('mycategory');">

但是“在新标签页中打开”并未显示在Firefox中,并在chrome中显示“about:blank”页面。在Firefox中,如果我按住CTRL然后单击,它可以工作,但网址是“javascript:%20liveresults('mycategory');”我不知道接下来该做什么。

有人知道我该怎么办?也许我应该尝试创建自己的自定义右键菜单,如http://grooveshark.com/

1 个答案:

答案 0 :(得分:-1)

试试这个:

function loadContent(event, param) {
    if (!event.ctrlKey) {
        console.log(param)
        return false
    } else
        return true
}

<a
  href='http://google.com'
  onclick='return loadContent(event, "category")'
>Testo</a>

我认为,无需解释 另外,风格方面,我建议你这样做:

function loadContent(event) {
    if (!event.ctrlKey) {
        console.log(event.target.dataset.category)
        return false
    } else
        return true
}

<a
  href='http://google.com'
  onclick='return loadContent(event)'
  data-category='my_category'
>Testo</a>

它可能不适用于旧的IE(有srcElement而不是目标),但在我看来看起来更酷。但是真的没关系。

或者,实际上(可能是太多了=)你可以摆脱双重指定地址:

function loadContent(event) {
    if (!event.ctrlKey) {
        var part_of_url = event.target.href.split('/')[3]
        // maybe some other extraction method, now 'mail'
        console.log(part_of_url)
        return false
    } else
        return true
}

<a
  href='http://google.com/mail/'
  onclick='return loadContent(event)'
>Testo</a>