7423 sujets

Développement web côté serveur, CMS

Bonjour tout le monde,

Sur un de mes derniers sites, j'ouvre un qui PDF dans un nouvel onglet du navigateur via la fonction javascript window.open() qui fonctionne très bien. Excepté sur Safari où il est impossible de déjouer le tour de la case cochée "Blocked popup" qui sont dans les preferences.

Alors ma question est : Est-ce qu'il existe un autre moyen que les internautes ouvrent un ce PDF (que ca soit dans un nouvel onglet / nouvelle page / téléchargement automatique) sur tous les navigateurs ?

Merci !
Lien exemple (rubrique Ebook sur homepage)
question existentielle, et je n'en connais pas la réponse si bien même elle existe) :

Est-ce qu'en 2017, après 20 ans d'existence de l'Internet de masse, est-ce toujours au webmaster de décider si un lien est dans la même page/un nouvel onglet/une nouvelle page ?

En d'autres termes, l'internaute est-il assez mature pour décider de lui même de sa meilleure façon de naviguer ou doit il se faire guider par le créateur du site ?
Salut,

Peut être pourrais tu activer une alert si le windows open ne fonctionne pas ?

var IsOpen= window.open([args]);

if (IsOpen== undefined)
   alert('Merci de désactiver le blocage de popup');
Sinon j'ai lu ça :

jquery $.ajax call when async is set to true. Safari would ignore window.open. Changing jquery $.ajax call to async: false allowed window.open to work.

exemple :
$.ajax({
 url: 'http://tonlien/',
 data: 'ton pdf',
 success: function(){window.open(someUrl);},
 async: false
});


à tester.
Modifié par JENCAL (29 Aug 2017 - 16:33)
Pourquoi ne pas simplement mettre le lien en target="_blank" ?

Sinon d'accord avec CAMEO172 mais parfois on doit faire ce que le client veut.
a écrit :
Est-ce qu'en 2017, après 20 ans d'existence de l'Internet de masse, est-ce toujours au webmaster de décider si un lien est dans la même page/un nouvel onglet/une nouvelle page ?

En d'autres termes, l'internaute est-il assez mature pour décider de lui même de sa meilleure façon de naviguer ou doit il se faire guider par le créateur du site ?


Heu, ça, c'est pour des sites non commerciaux. Le commanditaire d'un site à finalité commerciale veut garder ses visiteurs sur son site, et c'est son droit.

De plus, je connais plein d'internautes qui ne connaissent même pas l'existence du clic droit.

a écrit :
Pourquoi ne pas simplement mettre le lien en target="_blank" ?


target="_blank" ouvre une nouvelle fenêtre, target="new" ouvre un nouvel onglet. target="_blank" est une catastrophe : c'est la dernière fenêtre fermée qui est affichée à l'ouverture du navigateur. Autrement dit, si tu as configuré ton browser pour afficher les onglets ouverts à la session suivante et que tu fermes en dernier la fenêtre ouverte avec target="_blank", tu peux dire adieu à tous tes onglets. Apparemment, c'est pas encore connu de tout le monde.
Thierry,
tu me cites mais sans mon texte d'introduction Smiley cligne Elle a pourtant son importance car à mes interrogations (sincères) je n'apporte pas de réponses définitives.

Personnellement, même sur un site commercial, si je sens que je n'ai pas la main et que c'est le webmaster qui décide de ma navigation sur le site, je suis de ceux capable de tout fermer et d'aller chercher mon "besoin" autrement.
Il est vrai que je connais le clic droit depuis plus de 30 ans.. ceci expliquant cela.
thierry a écrit :

target="_blank" ouvre une nouvelle fenêtre, target="new" ouvre un nouvel onglet. target="_blank" est une catastrophe : c'est la dernière fenêtre fermée qui est affichée à l'ouverture du navigateur. Autrement dit, si tu as configuré ton browser pour afficher les onglets ouverts à la session suivante et que tu fermes en dernier la fenêtre ouverte avec target="_blank", tu peux dire adieu à tous tes onglets. Apparemment, c'est pas encore connu de tout le monde.


Euh, target new n'existe pas. D'autre part le comportement des navigateurs moderne est d'ouvrir un nouvel onglet. Le fait d'ouvrir une nouvelle fenêtre ou un nouvel onglet dépend de la configuration du navigateur lui même. Smiley cligne
a écrit :
Thierry,
tu me cites mais sans mon texte d'introduction. Elle a pourtant son importance car à mes interrogations (sincères) je n'apporte pas de réponses définitives.

Personnellement, même sur un site commercial, si je sens que je n'ai pas la main et que c'est le webmaster qui décide de ma navigation sur le site, je suis de ceux capable de tout fermer et d'aller chercher mon "besoin" autrement.
Il est vrai que je connais le clic droit depuis plus de 30 ans.. ceci expliquant cela.


Pardon, pas de volonté de déformer tes propos.

a écrit :
Euh, target new n'existe pas.


Affirmation difficilement soutenable. Il n'est apparemment pas dans les specs, mais ça ne l'empêche pas d'exister et d'être reconnu par tous les navigateurs que j'ai pu utiliser.

a écrit :
Le fait d'ouvrir une nouvelle fenêtre ou un nouvel onglet dépend de la configuration du navigateur lui même.


Raison de plus d'utiliser target="new", et ça marche correctement dans tous les navigateurs que j'ai pu utiliser, avec ou sans modification de configuration.
Modifié par thierry (30 Aug 2017 - 19:18)
Avec new tu cibles directement une frame new qui n'existe pas et tu pourrais écrire target="tartiflette" que cela ferait exactement la même chose. D'autre part le comportement est le même que _blank donc autant utiliser la bonne valeur, c'est juste une mauvaise habitude que de faire cela. Smiley rolleyes
Fanny,

Il y a l'attribut download, qui utilisé dans l'élément a, permet de télécharger un fichier au lieu de l'ouvrir dans une nouvelle fenêtre ou un nouvel onglet :

https://www.creativejuiz.fr/blog/tutoriels/html5-attribut-download-pour-forcer-telechargement

https://www.alsacreations.com/astuce/lire/1603-html5-attribut-download.html

Peux-tu vérifier si ça marche ?

@bzh : Effectivement, ça marche avec target="tartiflette", mais je ne recommanderais pas cette pratique. Il est possible que target="new" soit intégré dans une furure spec HTML, mais target="tartiflette", c'est nettement moins probable.

a écrit :
Euh, target new n'existe pas. D'autre part le comportement des navigateurs moderne est d'ouvrir un nouvel onglet. Le fait d'ouvrir une nouvelle fenêtre ou un nouvel onglet dépend de la configuration du navigateur lui même.


a écrit :
D'autre part le comportement est le même que _blank donc autant utiliser la bonne valeur, c'est juste une mauvaise habitude que de faire cela.


Il faudrait savoir : le comportement de target="_blank" est le même que celui de target="new" ou il dépend de la configuration du navigateur. Et sinon, en quoi est-ce une mauvaise habitude si le comportement génére est celui recherché dans tous les cas ?
Modifié par thierry (30 Aug 2017 - 22:23)
Euh Thierry je ne vais pas te répondre mille fois à ce sujet sur des propriétés/comportements que tu inventes et des il est possible que. Smiley hum
Modifié par bzh (31 Aug 2017 - 11:20)
Mais je n'invente rien, c'est là... :

https://www.alsacreations.com/astuce/lire/1603-html5-attribut-download.html

... et tu m'excuseras, mais je n'ai pas le temps de vérifier les specs, MDN, Can I Use, et et de tester dans tous les browsers (et j'ai pas de Mac), donc, précautions oratoires.

Sache que, sur ce forum, affirmer des choses de façon catégorique, c'est s'exposer à se prendre rapidement un démenti en pleine tronche.

Enfin, je ne t'ai jamais demandé de me répondre.
thierry a écrit :
Mais je n'invente rien, c'est là... :

https://www.alsacreations.com/astuce/lire/1603-html5-attribut-download.html

... et tu m'excuseras, mais je n'ai pas le temps de vérifier les specs, MDN, Can I Use, et et de tester dans tous les browsers (et j'ai pas de Mac), donc, précautions oratoires.

Sache que, sur ce forum, affirmer des choses de façon catégorique, c'est s'exposer à se prendre rapidement un démenti en pleine tronche.

Enfin, je ne t'ai jamais demandé de me répondre.


Hallucinant.

Il serait bien que tu relises un peu tes posts, je te rappelle que tu es venu affirmer qu'il ne faillait surtout pas utiliser target="_blank" car cela créait une nouvelle fenêtre - ce qui est faux car cela crée soit un nouvel onglet / soit une nouvelle fenêtre selon la configuration utilisateur ou le navigateur (bref en somme ce n'est plus ton problème). Et de deux tu as avancé qu'il fallait utiliser "new" pour ouvrir un nouvel onglet ce qui est tout aussi faux car le comportement est le même que celui de _blank.

Honnêtement, je n'ai aucune idée de si ta façon de faire à fonctionné un jour comme tu l'as affirmé, à savoir ouvrir un onglet à la place d'une fenêtre avec un quelconque navigateur mais aujourd'hui elle n'a aucun fondement même si elle fonctionne car tu peux utiliser "new" comme "tartiflette" comme n'importe quel mot pour cibler une frame / fenêtre / onglet en particulier.

Aujourd'hui la plupart des navigateurs bureau vont ouvrir un nouvel onglet et d'autres sur mobile, ne possédant pas d'onglet par exemple, vont ouvrir une fenêtre. D'autre part si tu n'as pas les moyens de tester, tu suis la norme car c'est le meilleur moyen pour que cela fonctionne.

Désolé mais je n'ai vu aucun démenti dans tes réponses juste un certain manque de modestie quand je t'explique que cela ne fonctionne pas comme tu l'entends. Smiley cligne
salut,
perso j'aurais aussi opté pour le target "_blank". Tu ajoutes ensuite dans le fichier cible un truc du genre :

<?php

    header('Content-Type: application/pdf');
    header('Content-Disposition: inline');
    readfile('chemin/fichier.pdf');
@bzh

a écrit :
Il serait bien que tu relises un peu tes posts, je te rappelle que tu es venu affirmer qu'il ne faillait surtout pas utiliser target="_blank" car cela créait une nouvelle fenêtre - ce qui est faux car cela crée soit un nouvel onglet / soit une nouvelle fenêtre selon la configuration utilisateur ou le navigateur (bref en somme ce n'est plus ton problème). Et de deux tu as avancé qu'il fallait utiliser "new" pour ouvrir un nouvel onglet ce qui est tout aussi faux car le comportement est le même que celui de _blank.

Hé bien, la dernière fois que j'ai utilisé target="_blank", il y a plusieurs années, cela ouvrait une page dans une nouvelle fenêtre. J'ai donc utilisé target="new" pour ouvrir une page dans un nouvel onglet. Jusqu'à ton intervention dans ce fil, j'ignorais que target="_blank" ouvrait non plus une nouvelle fenêtre mais un nouvel onglet (mais pas nécessairement dans tous les cas). Cela dit, suite à tes commentaire, j'ai effectué des recherches sur le sujet, mais, curieusement, je n'ai pratiquement trouvé aucune information décisive.

Par exemple, à propos de target, Mozilla Developer Network (https://developer.mozilla.org/fr/docs/Web/HTML/Element/a) déclare :

a écrit :
_blank : charge la réponse dans un nouveau contexte de navigation.

Tu avoueras que c'est follement explicite...

... et le validateur HTML du W3C ne signale pas les target="new" comme erreurs, alors, à qui se fier ?

Mais tu déclares aussi :

a écrit :
Aujourd'hui la plupart des navigateurs bureau vont ouvrir un nouvel onglet et d'autres sur mobile, ne possédant pas d'onglet par exemple, vont ouvrir une fenêtre. D'autre part si tu n'as pas les moyens de tester, tu suis la norme car c'est le meilleur moyen pour que cela fonctionne.

LA PLUPART ! Et donc pas nécessairement tous. Et tous, je n'ai pas la possibilité de vérifier.

Et, je me répète, pour les utilisateurs, l'ouverture dans une nouvelle fenêtre peut être catastrophique. Si ton browser est configuré pour afficher à l'ouverture les onglets ouverts à la session précédente, si tu as une première fenêtre avec des dizaines d'onglets ouverts (et que tu souhaites conserver ouverts), si un lien ouvre une nouvelle fenêtre et si tu fermes d'abord la première fenêtre, à la session suivante, tu ne retrouveras plus tes précieux onglets, mais celui de la seconde fenêtre. Et j'ai déjà vu des utilisateurs subir cette mésaventure.

Et quand tu me dis que :

a écrit :
cela [target="_blank] crée soit un nouvel onglet / soit une nouvelle fenêtre selon la configuration utilisateur ou le navigateur (bref en somme ce n'est plus ton problème)

Si, précisément, c'est mon problème. C'est mon problème si mon code amène un utilisateur à perdre tous les onglets qu'il désire conserver ouverts, car avant me soucier de la norme, je me soucie des utilisateurs. Si toi, tu préfères suivre la norme au risque de faire le malheur des utilisateurs, c'est une position que je ne partage pas.

a écrit :
Désolé mais je n'ai vu aucun démenti dans tes réponses juste un certain manque de modestie quand je t'explique que cela ne fonctionne pas comme tu l'entends.

Explique-moi en quoi target="new", bien que non standard, ne fonctionne pas.

Et une bonne journée quand même, hein.