用click事件替换href

时间:2018-03-29 09:10:37

标签: javascript angular ionic3

我的新闻文章包含一些带有href的锚标签,因此我无法在基于href的离子3应用程序中导航。所以我必须做的是我必须用click事件替换所有href并将href值作为参数传递给该函数。所以基于参数我可以推送到我的应用程序中的其他页面。

我收到这样的文章。

Here it is some news article with <a href="tickcharts.php" ></a> and one more link like <a href="kalender.php" ></a> like this.

我必须实现这个目标

Here it is some news article with <a (click)="handlefunction(tickcharts.php)" ></a> and one more link like <a (click)="handlefunction(kalender.php)" ></a> like this.

这样我就可以根据功能参数轻松导航。

handlefunction(navpage){
if(navpage == 'tickcharts.php'){
// Navigate to tickcharts page in my app
}else if(navpage == 'kalender.php'){
// Navigate to kalender page
}
}

这篇新闻文章来自我的mysql数据库。如果有可能我们可以在查询中替换但是如何?

请帮我摆脱这个。

5 个答案:

答案 0 :(得分:0)

我不熟悉离子,但如果有帮助,我可以为您提供一个通用的JavaScript解决方案:

window.addEventListener('click', event => {
    if (!event.target.hasAttribute('href')) return true;

    event.preventDefault();
    handlefunction(event.target.getAttribute('href'));
    return false;
});

这将捕获窗口级别的所有点击事件,如果事件源自具有href属性的元素,则会取消默认操作(即浏览器导航)并将href传递给你的handlefunction()

答案 1 :(得分:0)

您可以使用Router来解决您的问题

<强> HTML

<a (click)="handlefunction(tickcharts.php)" 

<强> TS

constructor(private route: Router){

}

handlefunction(tickcharts){
if(navpage == 'tickcharts.php'){
 this.route.NavigateByUrl('PROVIDE URL');
}else if(navpage == 'kalender.php'){
this.route.NavigateByUrl('PROVIDE URL');
}
}

答案 2 :(得分:0)

你可以这样做:

const handlefunction = href => console.log(href);

document
  .querySelectorAll('a')
  .forEach(link => {
    link.addEventListener('click',e => {
      e.preventDefault();
      handlefunction(e.target.getAttribute('href'));
    });
  });
Here it is some news article with <a href="tickcharts.php">tickcharts</a> and one more link like <a href="kalender.php">kalender</a> like this.

答案 3 :(得分:0)

最简单的方法就是这个:

handlefunction(){
window.open("path/to/your/tickcharts.php", "_blank"); //if you need it in new tab
window.location.open("path/to/your/tickcharts.php"); //in same tab
}

答案 4 :(得分:0)

感谢您输入的每一个我都得到了这样的解决方案。

首先我在我的后端有过滤数据,我已经用class替换了所有href。

var anchors = this.element.nativeElement.getElementsByTagName('a');
    if (length != 0) {
      for (var i = 0, length = anchors.length; i < length; i++) {
        var anchor = anchors[i];
        anchor.addEventListener('click', this.handlelinks.bind(this))
      };
    }
  }

  handlelinks(transition) {
     var navUrl =  transition.srcElement.classList[0];
     if(navUrl == 'tickcharts.php'){
      // go to tickcharts page
    } 
  }