2012-04-15 77 views
7

我已經檢查了過去幾天的大量示例,但仍無法找到我的困境的答案。爲了讓我首先解釋我的困境,我會告訴你一個我已經有效的例子,然後解釋我是如何工作的(但似乎無法實現)。在新選項卡中使用javascript打開頁面window.open(elementName.elementValue)在定位標記

這工作:

<form> 
<select name="url"> 
    <option selected="selected" value=""> Choose Donation Amount </option> 
    <option value="http://www.url1.com">URL#1</option> 
    <option value="http://www.url2.com">URL#2</option> 
    <option value="http://www.url3.com">URL#3</option> 
    <option value="http://www.url4.com">URL#4</option> 
    <option value="http://www.url5.com">URL#5</option> 
    <option value="http://www.url6.com">URL#6</option> 
</select> 
<input type="submit" value="Submit" onclick="if (url.value) window.open(url.value);" /> 
</form> 

但我寧願做的是捕捉選項,並用錨標記(而不是輸入[類型「提交」]),像這樣打開的網址(以更換閉幕表單標籤之前輸入的標籤):

<a href="javascript:void(if (url.value) window.open(url.value));" target="_blank">Submit</a> 

以上行不工作,我無法弄清楚如何正確地形成了。幫幫我?

我知道這似乎不合邏輯,特別是因爲我已經使用提交按鈕工作,但它也是不實際的我解釋爲什麼我不想使用輸入或按鈕類型=「提交「,或PHP。請,它確實需要在錨標記中嵌入JavaScript。 Thanks.s :-)

回答

7

添加您的形式name屬性,如:

<form name="form"> 

...然後嘗試這樣的:

<a href="" onclick="window.open(form.url.value, 'windowName'); return false" target="_blank">Submit</a> 

有一個工作example

+0

此作品在Chrome 18,但不火狐10(在OS X 10.6上運行)。我還沒有測試過其他瀏覽器/平臺。在FF中它只是打開一個空白頁面。 – Jeff 2012-04-16 03:36:37

+0

我看......你說得對。我更新了答案..這不是最好的解決辦法,但它的工作原理.. – PrimosK 2012-04-16 07:35:34

+0

謝謝!這是符合我需求的解決方案!我很欣賞這一點。 :-) – Jeff 2012-04-21 05:06:22

1

這個工作至今,雖然它的長

<a href="javascript:void((function(){ val=document.getElementsByName('url')[0].value; if(val) window.open(val)})())">click</a>

1

我不知道爲什麼你使用的形式,如果你只是想打開一個URL,同時選擇一個選項。閱讀下面的代碼:

<select name="url" onchange="window.open(this.options[this.selectedIndex].value,'_blank')"> 

這適用於每個瀏覽器甚至在IE5上。

0

您可以忘記使用JavaScript,因爲瀏覽器控制它是否在新選項卡中打開。最好的選擇是像做以下代替:

<form action="http://www.yoursite.com/dosomething" method="get" target="_blank"> 
    <input name="dynamicParam1" type="text"/> 
    <input name="dynamicParam2" type="text" /> 
    <input type="submit" value="submit" /> 
</form> 

這將在一個新的標籤,無論哪個瀏覽器客戶端使用,由於target="_blank"屬性的常開。

如果你需要的是一個沒有動態參數重定向你可以使用一個鏈路與target="_blank"屬性:

<a href="http://www.youresite.com" target="_blank">redirect</a> 
0

我們也有類似的規定。我們想在用戶點擊它時使用ajax調用從服務器端生成href url。經過大量搜索後,我們發現它實際上是由瀏覽器控制的。在Chrome中,新打開的頁面以彈出窗口打開,並且被彈出窗口阻止程序阻止。我們應用程序的大多數用戶都被這種行爲所困惑。這是我們使用的解決方法。希望這會幫助有類似問題的人。

我們可以有一個定期鏈接,指向我們在我們的網站中名爲LandingPage.html的實際網頁。我們必須將目標設置爲「_blank」以在同一瀏覽器選項卡中打開窗口。

<a href="LandingPage.html" id="fakeLink" target="_blank">Click to open google in the same browser window</a> 

然後,我們附加到fakeLink錨點元素的click事件。

$('#fakeLink').click(function(){ 
     $.ajax({ 
      url: "" 
     }).done(function() { 
      localStorage.setItem('url', 'https://www.google.lk'); 
     }); 
    }); 

我們可以執行ajax調用並從服務器檢索動態生成的url。那麼我們可以將該URL添加到localstorage。

着陸頁可以有文字指示,他們將在第二重定向用戶。 「您將被重定向在1秒到谷歌。」

在登陸頁面,我們可以有一個setTimeout和該函數內部,我們可以使用window.location的用戶重定向到實際的頁面。

setTimeout(function(){ 
     window.location.assign(localStorage.getItem('url')); 
    }, 1000); 

希望這會有所幫助,這應該在所有的瀏覽器,我在IE 10和Chrome,因爲我們沒有使用任何瀏覽器有關的東西只檢查。

相關問題