根据this post,通过指定匹配URL,我应该能够使用户脚本在iframe中工作。但是,如果将iframe for Facebook嵌入按钮之类的按钮(例如-codeforces.com
),则该功能对我不起作用。
作为MVCE,这是一个小脚本:
// ==UserScript==
// @name Bug test
// @version 0.1
// @author Gaurang Tandon
// @match https://codeforces.com/*
// @match https://www.facebook.com/v2.8/plugins/like.php
// @match https://www.facebook.com/v2.8/plugins/like.php/
// @match https://www.facebook.com/v2.8/plugins/like.php/*
// ==/UserScript==
(function() {
'use strict';
console.log(window.location.hostname);
}();
将其加载到codeforces.com上时,在DevTools Console中仅给出一个日志语句,即codeforces.com
。删除其中的@match
个伪指令中的一两个不会改变。
为什么脚本不能在该iframe中运行?
答案 0 :(得分:1)
首先 MCVE存在两个问题:
@match
必须为:
// @match https://www.facebook.com/v2.8/plugins/like.php*
因为典型的URL类似于:www.facebook.com/v2.8/plugins/like.php?app_id...
}();
,它必须是} ) ();
接下来, Tampermonkey试图保护您免遭这种愚蠢行为默认情况下将某些网站列入黑名单。
对于Facebook:
您可以通过以下方式查看Tampermonkey试图阻止的内容: