2013-10-17 49 views
8

我有一個Joomla網站,我有以下問題,我需要在我的產品詳細信息頁面上有」返回搜索頁面「功能,而我我按照答覆我initian問題,使用一些更改後的代碼:JS onclick =「history.go(-1)只有在我的域名下

<br/><a href="" onclick="if (document.referrer.indexOf(window.location.host) !== -1) alert('true'); { history.go(-1); return false; } else { window.location.href = 'mysite.com.br'; }"><?php echo JText::_('VOLTAR'); ?></a> 

現在,如果訪問者來自其他網站直接到我的產品頁面,然後點擊此,他將被重定向到我的網站主頁,這是好的,但如果我在我的網站的搜索頁面,點擊產品頁面,然後點擊後面的搜索鏈接,訪問者也被重定向到我的主頁,這是不好的,它應該被重定向到上一頁,這是他自己的搜索頁面。

有什麼辦法,以實現類似修改此代碼:

如果訪問者來自我的搜索頁面或在我的網站的任何地方,通過點擊這一點,他將被重定向到前一頁,如果一個訪問者來自我的網站外,通過點擊這個他將被重定向到我的主頁?

+0

這一定要與http://stackoverflow.com/a/24056766/37055因爲即使用戶是在您的網站有結合很多原因,他們不會有歷史記錄(新窗口,https到http等) –

回答

2

將分支邏輯添加到內聯點擊處理程序會變得混亂。如果你可以將它移動到一個函數並引用它,它將更具可讀性。

if(document.referrer.indexOf('mysite.com') >= 0) { 
    history.go(-1); 
} 
else { 
    window.location.href = 'myHomePageUrl'; // this might just be '/' of your site 
} 

編輯: 如果您不擔心加名字的網頁全球範圍內就可以馬上要創建的鏈接之前創建的腳本標記功能:

<script> 
    function backClick() { 
     // above conditional goes here. 
     return false; 
    } 
</script> 
<br/><a href="" onclick="backClick()"><?php echo JText::_('VOLTAR'); ?></a> 
+0

很好,我怎樣才能將onclick參數與HTML,JS和PHP結合起來?對不起,我有點困惑,我需要將這個IF子句與下面的代碼結合起來,才能在頁面中有一個像「返回搜索」那樣的文本:'
',我不是程序員,但我在這裏嘗試爲了解決這個問題,你能幫忙嗎? – ol30cean0

+0

看到我上面的修改。隨着頁面變得越來越複雜,您最終需要將大部分Javascript移動到單獨的腳本文件中,並在關閉中註冊事件處理程序,以避免將名稱泄漏到全局名稱空間中。儘管如此,如果你的頁面很簡單,這應該可以做到。 –

+0

你好,你的腳本和我需要的是相反的,我的意思是說,如果訪問者來自其他域,腳本調用'history.go(-1)',訪問者被髮送回另一個域,就像谷歌,如果訪問者來到我的網站的搜索頁面的產品頁面,並且我點擊後面的搜索鏈接,他會被重定向到我的網站的主頁,你能修復它嗎? – ol30cean0

15

您可以使用document.referrer並將其與window.location.host進行比較。

if (document.referrer.split('/')[2] === window.location.host) 
if (document.referrer.indexOf(window.location.host) !== -1) 

所以你的HTML看起來像這樣:

<a href="" onclick="if (document.referrer.indexOf(window.location.host) !== -1) { history.go(-1); return false; } else { window.location.href = 'website.com'; }"><?php echo JText::_('VOLTAR'); ?></a> 
+0

是的,這很酷,但我不能設法將onclick參數與HTML,JS和PHP結合起來,以便在頁面中有一個超鏈接文本「返回搜索」:'
',你能幫忙嗎? – ol30cean0

+0

修改答案。將'website.com'更改爲您想要重定向到的任何網站,或者使用'window.location.host'來使用當前的URL而不使用路徑。 – hexacyanide

+0

我在Firefox和Chrome中測試過它,我從谷歌鏈接來到我的頁面,點擊了後退按鈕,即使我能夠在瀏覽器的底部欄中看到,然後點擊按鈕鏈接似乎指向的鏈接到我網站的主頁,如果我點擊它,我被重定向回谷歌,很奇怪......你能解決它嗎? – ol30cean0

相關問題