如何读取默认的内联onclick属性,如何使用其中的链接并对其进行处理?

时间:2019-06-15 09:35:27

标签: javascript jquery html

我有一个div列表,这些列表具有单独的onclick函数。 该功能导致在新窗口中打开的http链接。在生成网站之前,我无法重写onclick函数,因为它是基于rss文件生成的第三方rss feed。现在,我希望保留各个链接,但对它们进行其他操作。

年表如下:

  1. 用户单击具有预写的onclick函数的元素。
  2. onclick函数被阻止在新页面中打开。
  3. onclick函数内部的链接已保存,以备将来使用。
  4. HTML5音频元素将链接作为源。

到目前为止,我已经尝试覆盖onclick函数。但是我在此过程中丢失了http链接。

<div class="fw-feed-item-url" 
onclick="window.open('http://www.example.com/podcasts/podcast_eposode3.mp3' 
, '_blank')">
        $(".fw-feed-item-url").click(function(){

        var audioSrcNew = eval($('.fw-feed-item-url').attr('onclick'));
        audioElement.src = audioSrcNew;
        console.log(audioSrcNew);
        $('.fw-feed-item-url').this.attr('onclick','alert("done"); return 
        false;');

        });

1 个答案:

答案 0 :(得分:0)

在JavaScript中,回调和事件处理程序应按绑定的顺序执行,并且无法更改该顺序。 onclick属性中的代码将在创建元素后直接绑定,因此将是第一个执行的代码。

防止这种情况的唯一方法是使用jQuery的.removeAttr在源或客户端中删除属性。因此,请像以下示例代码一样覆盖页面加载时的onclick事件。

<script>

$(document).ready(function() {

    var $elements =  $(".fw-feed-item-url");

    // Iterate over elements
    $elements.each(function () {

        var $elm = $(this);

        // Reference to onclick attribute value for future use
        var onClick = $elm.attr("onclick");
        console.log(onClick);

        // Remove onclick attr and bind your own click event
        $elm.removeAttr("onclick").click(function () {

            //Own code comes here
            alert("Whoa!!!! click worked!!");
        })

    });
});

引用自 How to decide execution sequence for Javascript and Jquery function