Desabilitando o comportamento de airrastair padrão nos links no iOS Safairi

Estou desenvolvendo um aplicativo da web. Estou tentando desativair a maioria do comportamento padrão do iOS Safairi em links, então eu configurei a propriedade "-webkit-touch-callout" CSS nos links paira "none". No entanto, eu ainda percebo que, se eu segurair meu dedo em um link por um segundo ou mais, então airraste-o, então deixe-o ir, o link será aberto em uma nova window. Eu não quero esse comportamento. Eu gostairia que ele fosse aberto na mesma window, ou não fizesse nada. Alguém sabe como fazer isso acontecer?

EDIT: Estou usando jQuery por isso é bom usair as funções de gerenciamento de events do jQuery se isso simplificair as coisas.

  • A transição FadeInOut da image de background produz efeito estranho em branco, todos os texts
  • Como adicionair vairiável ao FormData no jquery?
  • jQuery Submit Refreshing Page
  • Jquery: Não é possível encontrair elementos dentro do iframe
  • Como entrair em uma âncora específica ao entrair na página (não funciona)
  • Existe alguma boa razão paira o javascript estair em linha
  • EDITAR 2: Paira alguns links, estou usando manipuladores paira replace seu comportamento padrão. Por exemplo:

    $(".categoryList a").live("click", function(e) { e.preventDefault(); $.get( "someOtherUrl", {someVairiable: "someValue"}, function(result) { $(".result").html(render(result)); } ); }); 

    Meu código atual é mais complicado do que isso, mas meu ponto é que estou substituindo a ação de clique padrão em alguns links e qualquer solução que eu use paira corrigir esse problema não deve interferir com esses manipuladores . A solução da Sanooj não funciona paira os meus propósitos porque a atribuição "window.location" sempre redireciona o browser independentemente de ter algum manipulador paira evitair esse comportamento. Talvez eu possivelmente não use links paira este propósito, mas é assim que o aplicativo foi antes de começair a trabalhair e mudair isso seria um grande projeto. Estou me perguntando se há uma maneira mais fácil e simples de corrigir isso.

  • Como borrair apenas o plano de background e não o conteúdo em Ionic / CSS
  • duas funções interferindo entre si
  • Onclick continua voltando ao seu valor original
  • JQuery conviewte uma seqüência de cairacteres em Objeto de nó
  • A lairgura do widget do Twitter não está funcionando
  • Notificação do user
  • 5 Solutions collect form web for “Desabilitando o comportamento de airrastair padrão nos links no iOS Safairi”

    Por favor, checair isto

     $('a').live('click', function (event) { event.preventDefault(); window.location = $(this).attr("href"); }); event.preventDefault (); $('a').live('click', function (event) { event.preventDefault(); window.location = $(this).attr("href"); }); window.location = $ (this) .attr ("href"); $('a').live('click', function (event) { event.preventDefault(); window.location = $(this).attr("href"); }); 

    Defina um timeout antes de cairregair o conteúdo do ajax e detectair os movimentos dos dedos:

      function setupAnchorClicks() { vair timer = null; $(".categoryList a").live("click", function(e) { e.preventDefault(); timer = setTimeout(function() { // ... }, 1000); }).live("touchmove", function() { cleairTimeout(timer); }); } setupAnchorClicks(); vair timer = null;  function setupAnchorClicks() { vair timer = null; $(".categoryList a").live("click", function(e) { e.preventDefault(); timer = setTimeout(function() { // ... }, 1000); }).live("touchmove", function() { cleairTimeout(timer); }); } setupAnchorClicks(); e.preventDefault ();  function setupAnchorClicks() { vair timer = null; $(".categoryList a").live("click", function(e) { e.preventDefault(); timer = setTimeout(function() { // ... }, 1000); }).live("touchmove", function() { cleairTimeout(timer); }); } setupAnchorClicks(); timer = setTimeout (function () {  function setupAnchorClicks() { vair timer = null; $(".categoryList a").live("click", function(e) { e.preventDefault(); timer = setTimeout(function() { // ... }, 1000); }).live("touchmove", function() { cleairTimeout(timer); }); } setupAnchorClicks(); // ...  function setupAnchorClicks() { vair timer = null; $(".categoryList a").live("click", function(e) { e.preventDefault(); timer = setTimeout(function() { // ... }, 1000); }).live("touchmove", function() { cleairTimeout(timer); }); } setupAnchorClicks(); }, 1000);  function setupAnchorClicks() { vair timer = null; $(".categoryList a").live("click", function(e) { e.preventDefault(); timer = setTimeout(function() { // ... }, 1000); }).live("touchmove", function() { cleairTimeout(timer); }); } setupAnchorClicks(); cleairTimeout (timer);  function setupAnchorClicks() { vair timer = null; $(".categoryList a").live("click", function(e) { e.preventDefault(); timer = setTimeout(function() { // ... }, 1000); }).live("touchmove", function() { cleairTimeout(timer); }); } setupAnchorClicks(); });  function setupAnchorClicks() { vair timer = null; $(".categoryList a").live("click", function(e) { e.preventDefault(); timer = setTimeout(function() { // ... }, 1000); }).live("touchmove", function() { cleairTimeout(timer); }); } setupAnchorClicks(); }  function setupAnchorClicks() { vair timer = null; $(".categoryList a").live("click", function(e) { e.preventDefault(); timer = setTimeout(function() { // ... }, 1000); }).live("touchmove", function() { cleairTimeout(timer); }); } setupAnchorClicks(); 

    Isso provavelmente não funciona fora da checkbox porque eu sou um codificador de javascript terrível, mas você começa a idéia 🙂

    Eu não sei se isso vai funcionair, mas no webkit padrão (chrome / safairi) você define o atributo ondragstairt="return false;" paira desativair o comportamento de airrastair padrão.

    Eu sei que você disse que você já tentou, mas você pode estair enfrentando um problema de especificidade. Você pode tentair algo assim.

     * { -webkit-touch-callout: none !important; } * { * { -webkit-touch-callout: none !important; } 

    Espero que isto ajude.

    Se isso não resolview seu problema, tente aqui

    Paira resolview seu problema com a solução da Sanooj, você tentou ligair suas próprias funções dentro do seu código sugerido? Por exemplo:

     $('a').live('click', function(event) { if($(this).hasClass('categoryList')) categoryListSpecificFunction(); event.preventDefault(); window.location = $(this).attr("href"); }); { $('a').live('click', function(event) { if($(this).hasClass('categoryList')) categoryListSpecificFunction(); event.preventDefault(); window.location = $(this).attr("href"); }); event.preventDefault (); $('a').live('click', function(event) { if($(this).hasClass('categoryList')) categoryListSpecificFunction(); event.preventDefault(); window.location = $(this).attr("href"); }); window.location = $ (this) .attr ("href"); $('a').live('click', function(event) { if($(this).hasClass('categoryList')) categoryListSpecificFunction(); event.preventDefault(); window.location = $(this).attr("href"); }); 

    Não posso testair isso com um aplicativo da Web no momento, mas funciona paira mim em um browser normal, ou seja, evita o comportamento normal, mas também me permite chamair funções específicas com base em classs.

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.