Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我应该在内容脚本上使用setInterval()吗?_Javascript_Twitter_Google Chrome Extension - Fatal编程技术网

Javascript 我应该在内容脚本上使用setInterval()吗?

Javascript 我应该在内容脚本上使用setInterval()吗?,javascript,twitter,google-chrome-extension,Javascript,Twitter,Google Chrome Extension,我正在开发一个chrome扩展,它在每一条推特上都注入一个链接。注入实现的想法取自我看到的一个官方Twitter插件。不过我想知道性能如何。在此之前,我一直在处理MutationObserver以获得新的DOM元素,但在某些情况下它对我不起作用,所以我尝试了上面的想法 在我的例子中,当用户点击注入的链接时,我的插件应该向Twitter请求地理位置,如果找到,则返回它,否则可能会使用indexedDB保存它?所以它不会再出现了。这增加了一个额外的查询,询问是否在每条tweet上显示注入的链接 $(

我正在开发一个chrome扩展,它在每一条推特上都注入一个链接。注入实现的想法取自我看到的一个官方Twitter插件。不过我想知道性能如何。在此之前,我一直在处理MutationObserver以获得新的DOM元素,但在某些情况下它对我不起作用,所以我尝试了上面的想法

在我的例子中,当用户点击注入的链接时,我的插件应该向Twitter请求地理位置,如果找到,则返回它,否则可能会使用indexedDB保存它?所以它不会再出现了。这增加了一个额外的查询,询问是否在每条tweet上显示注入的链接

$(document).ready(function() {

    $('body').append('<div id="map"></div>');

    setInterval( function() {
        inyect();
    }, 2000);

});

function inyect() {

    $(".tweet, .js-tweet").each(function(){
        var inyected = $(this).find('.mapLink').length ? true : false;

        if ( ! inyected ) {  
            // also, check against the "geo-fails" list. if not in, do: 
            var id = $(this).attr('data-tweet-id');
            var geoElement = $(this).find('span.ProfileTweet-geo');

            geoElement
                .parent()
                .prepend('<a class="mapLink" tweet-id="'+ id +'" href="#">map</a>');
        }
    });

}

了解我的背景,您对这两个方面的建议是什么?注入链接和存储的性能?

我很难理解您想要做什么。你是不是在问不使用setInterval在每条tweet上注入链接?或者,当有人点击推特时,你是否在询问使用地理定位?如果两者都有,你应该把它们分成不同的问题。我想问的是,在我的情况下,setInterval是否是一个好的实践。地理定位不是一个问题,我只是提一下,当链接被注入时,有一个第一个条件,它询问这个链接是否已经被嵌入,然后它会查询一个列表或数据库以在失败列表中搜索。如果它在列表中,则不应显示链接。当用户点击并且推特没有地理位置时,失败列表就会填充。你说地理位置不是你的问题,但是你写的大部分内容都与地理位置有关。因此,推特发布,你的扩展注入一个链接。当tweet的读者点击链接时,您的分机会执行其他操作。但这是两种完全不同的行为。为什么读者会对你的推文有任何影响?这很容易。我为每一条推特注入我的链接。当用户点击它时,我会请求Twitter对该tweet ID进行地理定位。如果成功,它会显示一个地图,否则,它会将该tweet ID保存到一个fails数组中并隐藏该链接。从现在起,该链接不再显示在该推文上。但您想要的只是注射部分的扩展?我不知道你关于这个链接的其他问题是否相关。
$('body').on('click', 'a.mapLink', function(e) {
    e.preventDefault();

    var elem = $(e.target)
    var id = elem.attr('tweet-id')

    // request Twitter if the tweet contains geolocation data 
    // and save the position in that case

    // show map

    // else, SAVE that tweet id into the "geo-fails" list
    // show message and hide the link.
}