出于调试目的,是否可以从Google Chrome中的控制台访问用户脚本变量?
我知道Greasemonkey脚本会自动包装在以某种方式隔离的匿名函数中,以防止它们与页面中的脚本冲突.
Chrome用户脚本也会出现同样的情况吗?
javascript greasemonkey google-chrome anonymous-function userscripts
Chrome有自己的Greasemonkey,无论如何它有很多限制.其中之一是它的xmlhttprequest不支持Cross-Origin.那么有什么办法让它有效吗?
谢谢
greasemonkey google-chrome xmlhttprequest cross-domain userscripts
有没有人知道是否有某种方法可以为浏览器中加载的每个页面运行一段Javascript代码?有点像<script>在head标签内插入第一件东西.我对Chrome的解决方案最感兴趣.也许这是Chrome扩展程序的工作?
我想在某个网页上添加一些自定义键盘快捷键.
使用此问题中接受的答案作为指导:如何向现有JavaScript函数添加JavaScript键盘快捷键?
我创建了自己的小函数并添加了一个监听器:
// ==UserScript==
// @name ChartGame
// @namespace http://www.chartgame.com/
// @version 0.1
// @description enter something useful
// @match http://www.chartgame.com/play*
// @copyright 2012+, You
// ==/UserScript==
function doc_keyUp(e) {
switch(e.keyCode)
{
case 49: //1
mon_clk(3);
break;
case 50:
mon_clk(6);
break;
case 83: //s
BuySell(0);
break;
case 68: //d
BuySell(1);
break;
case 70: //f
TimelapseDwn();
TimelapseUp();
break;
default:
break;
}
}
document.addEventListener('keyup', doc_keyUp, false);
Run Code Online (Sandbox Code Playgroud)
如果我在相应的网页上将其输入Chrome javascript控制台,则此代码运行完全正常.我可以像我想的那样使用键盘快捷键.唯一的问题是如果我去下一场比赛(即图表......),我必须重新输入包含听众的javascript代码.
我的印象是,Tampermonkey允许我在与表达式匹配的特定页面上自动运行此脚本@match.代码似乎运行,但没有键盘快捷键功能.
从Chrome控制台和Tampermonkey等扩展程序运行javascript代码缺少什么或有什么不同?
javascript google-chrome keyboard-shortcuts userscripts tampermonkey
我想使用用户脚本在站点中加载另一个脚本文件.但是,js.onload事件无法正常工作.
用户脚本文件:
// ==UserScript==
// @name Code highlight
// @description Test
// @include http://localhost/*
// @version 1.0
// ==/UserScript==
var js = document.createElement('script');
js.src = "http://localhost/test/js/load.js";
document.getElementsByTagName("head")[0].appendChild(js);
js.onload = function(){
console.log(A)
}
Run Code Online (Sandbox Code Playgroud)
load.js文件:
var A = {
name:'aa'
}
Run Code Online (Sandbox Code Playgroud)
在Chrome中,控制台输出"undefined",但load.js已完全加载.
我在Firefox中进行了测试,输出A正确.
这个简单的代码不适用于Facebook页面.此代码仅在刷新页面时发出警报.如果我用我的鼠标在我的Facebook个人资料中访问该页面; 脚本停止工作.
没有警报或错误.:(
看起来整个脚本不起作用,直到我刷新.
// ==UserScript==
// @name Purge My Facebook
// @namespace http://www.arda.com
// @description test
// @include https://*.facebook.com*
// @include http://*.facebook.com*
// @version 1
// ==/UserScript==
window.setTimeout (isParent, 500);
function isParent () {
if (window.self == window.top) {
alert ("main window");
} else
window.setTimeout (isParent, 500);
}
Run Code Online (Sandbox Code Playgroud)
除此之外,我还试过这个:
// ==UserScript==
// @name Purge My Facebook
// @namespace http://www.arda.com
// @description test
// @include http://www.facebook.com/*/allactivity*
// @include https://www.facebook.com/*/allactivity*
// @version 1
// ==/UserScript==
try{
if …Run Code Online (Sandbox Code Playgroud) 是否有这样的事件或技巧来执行代码,当你已经<img>使用javascript创建后可以获得自然大小但你不必等待它完全加载(图像可能是5mb所以你必须等待10 +秒它被"加载"但是当它刚刚开始加载时你可以立即获得它的自然尺寸(几毫秒) - 我想知道它获得自然尺寸道具并钩住它的时间)
我正在编写用于下载视频的用户脚本.该网站的Flash播放器使用JSON文件.
我的脚本的目的是通过根据网页下载和解析视频来获取视频的URL.目前,它可以成功下载提取视频的URL.
JSON文件的重要部分如下所示:
{
"ammProfile": "AMM-HBBTV",
"version": "VF",
"versionProg": "1",
"VFO": "HBBTV",
"VMT": "mp4",
"VUR": "http://vo.llnwd.net/v2/am/HBBTV/051332-074-A_SQ_2_VF_01464306_MP4-2200_AMM-HBBTV.mp4"
}, {
"ammProfile": "AMM-HBBTV",
"version": "VF",
"versionProg": "1",
"VFO": "HBBTV",
"VMT": "mp4",
"VUR": "http://vo.llnwd.net/v2/am/HBBTV/051332-074-A_EQ_2_VF_01464315_MP4-1500_AMM-HBBTV.mp4"
}
Run Code Online (Sandbox Code Playgroud)
这里的两个URL都是关于相同的视频,这只是改变的分辨率.
那么,如何在不下载整个文件的情况下解析相关元数据呢?H.264视频编解码器的标准很难阅读.
userscripts ×10
javascript ×9
tampermonkey ×3
ajax ×2
greasemonkey ×2
browser ×1
console ×1
cross-domain ×1
events ×1
facebook ×1
h.264 ×1
image ×1
onload ×1
script-tag ×1