recherche

Maison  >  Questions et réponses  >  le corps du texte

php - fenêtre contextuelle window.open() bloquée.

Transmettez une URL depuis le backend, et après l'avoir reçue, le frontend ouvrira une nouvelle fenêtre et accédera à ce lien.
Utilisez window.open(url, '_blank'); être intercepté par le navigateur.< /p>

Existe-t-il un moyen d'y parvenir ? J'ai essayé de simuler le clic de la balise a et il l'a quand même intercepté. La fenêtre contextuelle p n'a pas réussi à charger l'iframe et la fenêtre doit être ouverte.

Le problème a été résolu, voir la réponse acceptée.

PHPzPHPz2753 Il y a quelques jours722

répondre à tous(8)je répondrai

  • 巴扎黑

    巴扎黑2017-05-16 13:14:48

    Pour cette question, il faut d'abord comprendre pourquoi elle est interceptée. Le navigateur fera des appels "non artificiels"window.open的弹窗进行拦截,什么叫做"非人为"的,就是浏览器判断在用户操作和window.open之间不是连续的,浏览器会认为可能是流氓程序弹出的广告窗口从而进行拦截
    从楼主的描述可以看出,楼主应该是进行某个操作之后,通过ajax去获取一个url,然后通过window.open打开页面,我们都知道ajax是异步的,浏览器就认为不是连续的,所以就拦截了
    解决方法可以先在操作(比如点击)的时候,直接window.open, puis ira en ajax pour obtenir les données, puis attribuera une URL à la fenêtre ouverte Le pseudo code approximatif. est le suivant :

    el.addEventListener('click',function(){
        var winHandler = window.open("","_blank");
       ajax(function(url){
            winHandler.location.href = url;
       });
        
    })

    répondre
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 13:14:48

    <a href="http://www.baidu.com" target="_blank" id="xx">hahah</a>
        <button type="button" id='btn'>clickme</button>
        <script>
            document.getElementById('btn').onclick = function() {
                document.getElementById('xx').click();
            }
        </script>

    Il n’y a rien de mal à cela.

    répondre
    0
  • 仅有的幸福

    仅有的幸福2017-05-16 13:14:48

    Pourquoi ajouter _blank ?

    window.open('www.baidu.com')

    répondre
    0
  • 高洛峰

    高洛峰2017-05-16 13:14:48

    Si l'url a un en-tête http ou https

    répondre
    0
  • 漂亮男人

    漂亮男人2017-05-16 13:14:48

    Écrivez l'événement qui déclenche la méthode sous forme de balise a et écrivez la logique pour obtenir l'URL dans le contrôleur pointé par la balise a, puis vous pourrez revenir à une nouvelle page, en contournant la méthode window.open en bref

    répondre
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 13:14:48

    Pour des raisons de sécurité, le navigateur bloquera automatiquement les pop-ups

    répondre
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:14:48

    Seules les commandes qui ouvrent une nouvelle fenêtre peu de temps après que l'utilisateur a cliqué dessus, comme window.open, ne seront pas interceptées. Il s'agit d'une restriction de sécurité du navigateur.

    répondre
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 13:14:48

    Essayez d'ajouter un paramètre supplémentaire à la requête ajax :async: false

    répondre
    0
  • Annulerrépondre