instagram_allow_saveimage

Allow "Save image as..." on context menu of Instagram.

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name        instagram_allow_saveimage
// @namespace   http://catherine.v0cyc1pp.com/instagram_allow_saveimage.user.js
// @match       https://www.instagram.com/*
// @version     1.14
// @require     http://code.jquery.com/jquery-2.2.4.min.js
// @grant       none
// @run-at      document-end
// @description Allow "Save image as..." on context menu of Instagram.
// @description KNOWN ISSUE: can't save videos.
// @license     MIT
// ==/UserScript==

this.$ = this.jQuery = jQuery.noConflict(true);


//console.log("instagram_allow_saveimage start");


function main() {
	$("img").each(function() {
		$(this).removeAttr("srcset");
		$(this).removeAttr("sizes");



		var $parent = $(this).parent("div");
		//console.log("$parent="+$parent);
		if ( $parent == null || $parent == undefined ) {
			return;
		}
		var $next = $parent.next("div");
		//console.log("$next="+$next);
		if ( $next == null || $next == undefined ) {
			return;
		}

		var $next2 = $next.next("div");
		//console.log("$next2="+$next2);
		if ( $next2 != null || $next2 != undefined ) {
			var next2_classname = $next2.attr("class");
			if ( next2_classname != undefined ) {
				//console.log("next2_classname="+next2_classname);
				return;
			}
		}


		var classname = $next.attr("class");
		//console.log("classname="+classname);
		/*
		var parent_classname = $parent.attr("class");
		console.log("parent_classname="+parent_classname);
		if ( classname === "_b0xvl" ) {
			return;
		}
		*/
		
		
		var kids = $next.children();
		//console.log("len="+kids.length);
		if ( kids.length == 0 ) {
			//console.log("hide: classname="+classname);
			$next.hide();
		} else {
			//console.log("show: classname="+classname);
			$next.show();
		}
	});

}


var observer = new MutationObserver(function(mutations) {
    observer.disconnect();
    main();
    observer.observe( document, config);
});

var config = { attributes: true, childList: true, characterData: false, subtree:true };

observer.observe( document, config);