JS - предотвращение дефолта для остановки обновления при щелчке тега привязки - PullRequest
0 голосов
/ 08 июня 2018

У меня есть строка кода ниже, которая просто помещает ссылку на родительскую страницу:

<a href="javascript:void(0)" id="createNewsLink" class="short" onclick="javascript:func1(); func2(param1,param2,param3);return false;"><caps:msg textId="createNews"/></a>

При нажатии на вышеуказанную ссылку вызывается 2 функции:

func1 ():

var timestamp;

function func1() {
    timestamp = +new Date();
    return false;
}

func2 ():

function  func2(param1,param2,param3,param4){ 
    var win;
    var location = window.location.href; // location A
    var encodeStringVar = encodeString(param3);
    win = window.open(param1+'/struts1.action?param2='+param2+'&param3='+ escape(encodeStringVar) +'#'+param4,target='t1','toolbar=no,scrollbars=yes,menubar=no,location=no,width=990,height=630, top=100, left=100');
    window.location.href = location; // location A
    return win;
}

При нажатии ссылки на родительской странице открывается всплывающее окно с вызовом действия Struts, и оно прекрасно работает.Единственная проблема заключается в том, что при нажатии на ссылку на родительской странице она обновляет родительскую страницу.Я не хочу, чтобы он обновлялся, и я попытался добавить return false в ссылку и функцию javascript void(). Также я попытался добавить прослушиватель событий для события щелчка по этой ссылке, как показано ниже:

$(document).ready(function() {
    $("#createNewsLink").click(function(event) {
        //return false;
        event.preventDefault();
    })
})

и ниже:

$(document).ready(function() {
    document.getElementById("createNewsLink").addEventListener("click", function(event) {
        event.preventDefault();
    });
})

Но ничего из этого не сработало, может кто-нибудь, пожалуйста, укажет на ошибку в моем коде?

1 Ответ

0 голосов
/ 08 июня 2018

Не могли бы вы попробовать:

(function(){
  var linkElement = document.querySelector('#createNewsLink');
  linkElement.addEventListener('click',function(e) {

    var param1 = e.target.getAttribute('attr-param1');
    var param2 = e.target.getAttribute('attr-param2');
    console.log(param1,param2);
    // Do what ever you want here.
    e.preventDefault();
  });
})();
<a href="http://google.com" id="createNewsLink" class="short" attr-param1="foo" attr-param2="bar">Click me</a>

Здесь я избегаю привязки любого события из html и централизую все черты / привязки в одном месте.Затем я указываю один из способов найти обязательные параметры для вашей черты.

...