获取动态加载页面的图像

时间:2016-04-08 14:34:10

标签: javascript jquery facebook tampermonkey

我想在facebook加载时获取所有图片。我正在运行一个tampermonkey脚本。我遇到了一些问题:

  1. 最终结果是包含在我排除的网址的图片中(使用facebook静态网址)。
  2. 它只包含新闻源中的一些图像,如果我向下滚动则不会重新评估其输出。这可能是因为加载功能,但我怎样才能使它成为动态加载呢?我在哪里可以添加像.scroll这样的函数?
  3. 我正在使用jquery仅在加载页面时运行这些函数。我应该做别的事吗?

    以下是代码的一部分:

    // ==UserScript==
    // @name         Accountability
    // @namespace    http://tampermonkey.net/
    // @include     https://www.facebook.com/*
    // @include     http*://*.facebook.com/*
    // @exclude       htt*://*static*.facebook.com*
    // @version      0.1
    // @description  
    // @author       You
    // @match        http://tampermonkey.net/scripts.php
    // @grant        none
    // @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
    // ==/UserScript==
    /* jshint -W097 */
    'use strict';
    
     window.addEventListener('load', function() {
    
    var all_images = document.evaluate('//img[@src]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); 
    var newsfeed = document.evaluate('//*[contains(@id, topnews_main_stream_408239535924329)]', document, null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); 
    
    var imgSrcs = [];
    for (var i=0; i < all_images.snapshotLength; i++){
        var this_image = all_images.snapshotItem(i);
        var src = this_image.src;
        if(src.indexOf('static') > -1){
            continue;
        }
        if(src.indexOf('external') > -1){
            continue;
        }
        imgSrcs.push(src);
        console.log(this_image.src);
        this_image.addEventListener("click", my_func, false);
    }
    
    for (var i=0; i < newsfeed.snapshotLength; i++){
        var this_news = newsfeed.snapshotItem(i);
        var src = this_news.src;
        if(this_news.children.length>0){
            }
        if(Object.getOwnPropertyNames(this_news)[0]== '_startTime'){ 
            var x = this_news.onreadystatechange();
            }   
        this_news.addEventListener("click", my_func, false);
        this_news.addEventListener("mouseover", my_func, false);
    }
    var my_func = function(){
        console.log("the list", imgSrcs);
    }
    
    }, false);
    

1 个答案:

答案 0 :(得分:1)

您可以load绑定所有img标签,例如

$("img").on("load", function() {
  console.log($(this)[0].src)
});

如果您真的想使用纯javascript来模仿on,可以参考Emulate jQuery "on" with selector in pure javascript