【问题标题】:getting the images that load in a page dynamically动态获取页面中加载的图像
【发布时间】:2016-07-29 21:06:18
【问题描述】:

我想在加载时获取 facebook 新闻源中的所有图像。我正在运行一个篡改脚本。我遇到了一些问题:

  1. 最终结果是包含在带有我排除的网址的图像中(带有 facebook 静态网址)。
  2. 它只包括新闻源中的一些图像,如果我向下滚动它不会重新评估它的输出。这可能是因为加载功能,但我怎样才能使它成为动态加载呢?例如,我可以在哪里添加 .scroll 之类的功能?

我只在页面加载时使用 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);

【问题讨论】:

    标签: javascript jquery facebook tampermonkey


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-07-24
      • 1970-01-01
      • 2017-10-29
      • 2010-09-12
      • 2015-11-03
      • 2018-01-18
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      相关资源
      最近更新 更多