アプリ版:「スタンプのみでお礼する」機能のリリースについて

javascriptのスクリプト中に、例えば
window.open()でブラウザの別窓[別ウィンドウ]を開くような部分が有っても、
ブラウザのポップアップブロック設定によって邪魔されて実現しないという場合に、
人間がブラウザ側の設定を変えてブロック解除することは簡単です。
さて
これを、
予めjavascriptのスクリプト中に、ブロック解除のための命令を書いておいて
人手を介さず、
スクリプトが実行されれば確実に(邪魔されず)別窓ポップアップが実現されるように
したいです。
javascriptのコーディングだけでそれは可能でしょうか?
なるべくjqueryとか使わず、javascriptだけでやりだいです。

欲を言えば、自分の作ったスクリプトが動くときだけ、ブロック解除するが
その後は、また、ポップアップブロックされるように
元通りにブラウザの設定を戻して終了するように書ければ
なお良いです。

ご教授のほど
よろしくお願い致します。

A 回答 (2件)

不可能なので代案



<a href target=_blank>別タブで開く。開いた window を focus すると更によし</a>

<form action target=_blank>
<input type=hidden name value>
<button type=submit>別タブに色々パラメーター付きで開く</button>
</form>

<button type=button id=xxxxx>疑似ポップアップ内に iframe を表示</button>
<script>
function makePopupListener(url){ return function(ev) {
function R(d,s){if(s) for (var i in s) d[i] = s[i]; return d}
function E(n,s){var e=document.createElement(n); if(typeof s=='string')e.appendChild(document.createTextNode(s)); if(typeof s=='object')R(e,s); return e}
var B = document.body, ST = document.documentElement.scrollTop;
var back = E('div'), pane = E('div');
R(back.style, {position:'absolute', top:'0px', left:'0px', width:'100%', height:'100%', backgroundColor:'black', opacity:'0.5'});
R(pane.style, {position:'absolute', top:'50%', left:'50%', width:'16em', marginLeft:'-8em', height:'10em', marginTop:'-5em', backgroundColor:'white', textAlign:'center', border:'thin solid black', zIndex:'1'});
var cont = pane.appendChild(E('iframe',{src:url}));
R(cont.style, {width:'15em', height:'6em'});
var okey = pane.appendChild(E('p')).appendChild(E('button',{textContent:'OK',type:'button'}));
okey.addEventListener('click',function(ev){window.scrollTo(0,ST); B.removeChild(back), B.removeChild(pane); ev.target.removeEventListener(arguments.callee)},false);
B.appendChild(back), B.appendChild(pane);
okey.focus();
window.scrollTo(0,0);
}}
window.addEventListener('DOMContentLoaded',function(){ document.getElementById('xxxxx').addEventListener('click', makePopupListener('http://www.example.com/'), false)},false);
</script>

素直にライブラリを使う
https://www.google.co.jp/search?q=lightbox
https://www.google.co.jp/search?q=floating+popup
    • good
    • 0
この回答へのお礼

どうも、ご丁寧にご指南いただき
有難うございます。
検討します。

お礼日時:2015/06/29 21:48

セキュリティ上の仕様をプログラムが解除できてしまったら意味ないでしょ?


どうしても必要な仕様であれば、ユーザーに任意にポップアップ対象外にしてもらうことです。
    • good
    • 0
この回答へのお礼

早速の御回答、有難うございます。
確かにそうですね。
これを認めてしまうと、
延々とウィンドウを開き続けるような
悪意のウィルス的スクリプトを認めてしまう事に
なりますね。
間抜けでした。
どうもどうも。

お礼日時:2015/06/29 21:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!