2012-04-15 12 views
7

私は過去数日間に数多くの例を調べましたが、私のジレンマにはまだ答えが見つかりません。私が私のジレンマを説明するためには、最初に、私がその作品を持っているものの例を示し、次にそれがどのように働くのかを説明します(しかし達成できないように思われます)。アンカータグの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> 

しかし、私はむしろやるだろうことに(オプションをキャプチャし、アンカータグ(むしろ入力よりも[タイプ「提出」])このような、何かを使用してURLを開く次のとおりです。

これは動作します終了タグの前に入力タグを置き換えてください)。

<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があります。それはあなたがあなただけのオプションを選択しながらURLを開きたい場合は、フォームを使用する必要があり、なぜ私にはわからない

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

+0

これはChrome 18では動作しますが、Firefox 10(OS X 10.6で動作)では動作しません。私は他のブラウザ/プラットフォームをテストしていません。 FFでは、単に空白のページを開くだけです。 – Jeff

+0

私は..あなたが正しいと思う..私は答えを更新しました..それは最高の解決策ではありませんが、それは動作します.. – PrimosK

+0

ありがとう!!これは私のニーズに合ったソリューションです!本当にありがとう。 :-) – Jeff

1

これは、これまで働いていました。以下のコードを読んでください:

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

これはIE5でもすべてのブラウザでうまくいきます。

1

長いですけれども

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を生成したかったのです。多くの検索を行った後、実際にブラウザによって制御されていることがわかりました。クロームでは、新しく開いたページがポップアップとして開き、ポップアップブロッカーによってブロックされます。アプリケーションのほとんどのユーザーは、その動作によって混乱しました。これが私たちが使用した回避策です。これが似たような問題を抱えている人に役立つことを願っています

LandingPage.htmlというサイトにある実際のWebページを指す、通常のリンクを設定することができます。同じブラウザタブでウィンドウを開くには、ターゲットを "_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秒後にリダイレクトされることをユーザーに示すテキストを付けることができます。 "1秒でGoogleにリダイレクトされます。"

ランディングページでは、settimeoutを設定することができ、その関数内にwindow.locationを使用して実際のページにリダイレクトすることができます。我々は任意のブラウザ関連のものを使用していないので、これは、これはすべてのブラウザで動作するはずです役立ちます

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

希望は、私はIEとChrome 10でチェック。

関連する問題