[问题] 如何拦截href的开启网页讯息

楼主: leondemon (狗狗)   2016-09-30 23:06:11
目前的是希望一个 <a href> 在开启网页的时候,不是直接整个跳转网页
而是在页面某个 iframe 中开启它。目前找到的解决方法是:
```
/*某iframe tag*/
<iframe name='this_iframe'></iframe>
/*某a tag*/
<a href='https://....' target='this_iframe'></a>
```
利用 <iframe name> 和 <a href target> 可以将连结指定到 iframe 中开启
但是目前希望用 JS 拦截这个开启连结的请求,
然后做一些判定、修改一些 element 后,再决定是否由 iframe 开启。
jQuery 好像可以做到这点,但是我希望用 vanilla JS 完成这件事情,
因为不希望包一个 library 在 browser extension 内...
但是不太确定这边要如何拦截这个 http request 请求,得到 URL,
然后在 callback 中做一些事情,最后决定是否要开启,或是指定 iframe 开启
```
document.getElementById(href_id).addEventListener('click', (...a) => {
console.log('click', ...a);
return false;
});
```
以上虽然可以拦截点击的事件,但是拿不到 URL,而且回传 false 也无法阻止开启网页
最后也不知道如何指定 iframe 加载一个 URL...
另外一个问题,如果我已经会 RxJS 了 (我是由别的开发平台转过来,FRP 写两年了)
那我如果要开发网页,还有需要学 jQuery/Ajax/Promise 吗?
作者: Hevak (Arthow Eshes)   2016-10-01 00:34:00
eventlistener那个click后面的callback吃的第一个参数是event物件,直接用e.target就拿得到被点击的element,而a element的href可以直接用那个element的.href存取,所以你直接在callback里面用e.target.href就取得到被点击的元素的href值e.preventDefault();这个可以阻止事件的默认行为例如a跳转到href之类的很常看到第callback (e) => 里面第1行就在写e.preventDefault();的XDRx如果我理解没错的话跟你所说的那些东西其实都不冲突@@...

Links booklink

Contact Us: admin [ a t ] ucptt.com