我正在尝试创建一个解析页面的书签,并通过我定义的表单将结果发送到googledocs电子表格.
脚本的相关部分是:
var form = document.createElement("form");
form.action = "http://spreadsheets.google.com/formResponse?formkey=Fd0SHgwQ3YwSFd5UHZpM1QxMlNOdlE6MA&ifq";
form.method = "POST";
form.id="ss-form";
form.innerHTML = ["<input id='entry_0' name = 'entry.0.single' value = '" + orderDate + "'/>", "<input name = 'entry.2.single' value = '" + email + "'/>", "<input name = 'entry.3.single' value = '" + customerID + "'/>", ].join("");
form.submit();
alert(form.innerHTML);
Run Code Online (Sandbox Code Playgroud)
//返回:
没有任何东西通过书签保存到表单 - 在我的书签的代码中捕获谷歌的响应的任何方式?(fwiw,我通过jQueryify注入了jQuery)
编辑:
Firebug的Net面板没有听到由bookmarklet触发的任何活动 - 我如何通过goolgle的viewform方法而不是formresponse来处理这个问题.
我想提交的表格位于:
http://spreadsheets.google.com/viewform?hl=en&formkey=dFd0SHgwQ3YwSFd5UHZpM1QxMlNOdlE6MA
我怎样才能将脚本值注入该表单然后再次提交...通过在被解析的页面上触发的bookmarklet中的脚本?
我的书签可以从任何网站调用,基本上允许用户从远处向他的收藏中插入一行 - 如果他已登录.
现在我想为我的网站启用CSRF保护,因为书签基本上是非伪造的跨网站请求,我想到了我如何区别于伪造的.
这不是一个高安全性的环境,但我也对原则感兴趣.
我以为我有办法做到这一点,但后来意识到它有很多问题.
我根本没想到的一件事是Sripathi Krishnan建议使用iframe.
我没有指定我的用例,所以是的,iframe是上述问题的有效解决方案.
然而,实际上我的书签目前在运行时确实与网站进行了一些基本的交互(意味着表格已经存在,用户可以在网站DOM中更改他的选择,这应该改变表格).我已经准备好为我的用例解雇这个功能,如果事实证明,没有合理安全的方式来区分伪造的非伪造跨站请求 - 但我仍然对理论水平感兴趣.
我们有一个书签,用户点击一个按钮,像highligther这样的检查需要启动.我们希望这是跨浏览器.
为此,我们需要在鼠标移动过程中检测DOM元素,一旦我们有了这个元素,我们需要用CSS突出显示.
我们在通过鼠标移动检测DOM元素时遇到问题,您能指导我们如何完成这项工作吗?
一旦我们有了这个DOM元素,在用户点击时我们需要提取XPath.
我们正在开发一个书签,当书签加载到不同的网站上时,例如:cnn.com,bbc.co.uk,yahoo.com,它以各种风格显示,我们很难重置这些样式.
bookmarklet内容位于当前页面DOM中,而不是iframe中(因为我们需要cookie并访问DOM).
我们尝试使用CSS重置,但这只重置一些基本的东西,比如边距.例如,有一个自定义表单的页面,或者它继承的圆形表矩形,它不应该.
有没有办法让我们可以完全隔离当前页面中的DIV区域,只显示我们想要的内容?
根据维基百科关于Bookmarklets的文章(http://en.wikipedia.org/wiki/Bookmarklet),Bookmarklets的概念是:
Web浏览器将URI用于标记的href属性和书签.URI方案(例如http:,file:或ftp:)指定协议和字符串其余部分的格式.浏览器还实现了一个前缀javascript:对解析器来说就像任何其他URI一样.在内部,浏览器看到指定的协议是javascript,将字符串的其余部分视为JavaScript应用程序然后执行,并将结果字符串用作新页面.
它表示结果字符串用作新页面.那么这是否意味着浏览器的原始DOM不受该字符串的影响?但是,如果只将结果字符串用作新页面,我如何在现有DOM中更改或注入新的DOM元素?因为脚本提醒Hello或注入一些新的DOM元素并没有真正返回任何内容.他们有点在现有的DOM上工作.
现在,在Internet Explorer中,除了使用Bookmarklets在页面上执行一些JavaScript之外,我还可以编写一个BHO插件并按以下方式注入:
document = (HTMLDocument)webBrowser.Document;
var injectedJS = System.IO.File.ReadAllText("InjectedJS.js");
var window = document.parentWindow;
window.execScript("(function(){ " + injectedJS + " })()");
Run Code Online (Sandbox Code Playgroud)
同样在chrome中,我可以编写一个扩展来实现同样的目的:
var s = document.createElement('script');
s.src = chrome.extension.getURL("script.js");
s.onload = function() {
this.parentNode.removeChild(this);
};
(document.head||document.documentElement).appendChild(s);
Run Code Online (Sandbox Code Playgroud)
这些有何不同?我所拥有的高级问题是:
execScript方法或在浏览器中使用javascript:protocol 执行JavaScript的方式有什么不同吗?javascript bho bookmarklet javascript-injection google-chrome-extension
有没有办法创建动态Pinterest按钮?我正在尝试将Pinterest支持添加到主要内容是动态的站点,因此我只在页面源中有一个Pin It按钮,它固定了当前内容.
我无法找到使用预建Pin It按钮执行此操作的方法,因为它要求您提前指定硬编码的URL.
但是,还有一个Pin It bookmarklet可以实现我想要的效果 - 但这需要用户手动将其添加到书签栏.
有没有什么方法可以(a)修改Pin It按钮,或(b)以某种方式将书签集成到我的页面中,以便它可以固定任何当前页面内容?
本网站:
有一个非常讨厌的标题,总是在屏幕上,不会滚动.
如果我右键单击它并在firefox中"检查元素",那么我发现css包含"position:fixed;",如果我解开它,标题会表现出来,并按照上帝要的标题滚动.
有没有办法让firefox自动执行此操作,即删除所有位置:渲染之前所有页面中的固定行?
编辑 - - - -
经过一番思考后,我想要的是一个可以杀掉这类东西的书签.
那么如何让SciMonster看起来很有前途:
var x = document.querySelectorAll('*'); // get all elements
for (var i = 0; i< x.length; i++) {
if (x[i].style.position == 'fixed') {
x[i].style.position = 'static';
}
}
Run Code Online (Sandbox Code Playgroud)
成
javascript:???
Run Code Online (Sandbox Code Playgroud)
适合进入firefox书签的位置字段?
在win条件下,如果你去http://nautil.us,然后单击bookmarklet按钮,浮动标题会停止浮动并滚动,就像你position: fixed;在元素检查器中删除了一样.
我正在研究如何创建用于移动safari的bookmarklet,我遇到了这个问题:
我不确定为什么我无法找到关于这个主题的任何问题.我的谷歌搜索也没有任何结果.但似乎iOS已经完全禁止将JavaScript输入到移动Safari的地址栏中.有一条消息显示如下:
他们甚至可以确保当你在移动版Safari上编辑书签时,没有办法逃避单引号或双引号,并且他们完全禁用了键盘上的双引号 - 从而妨碍了用户的能力创建一个包含这些字符的书签.
那么有没有办法制作一个实际上做任何事情的书签?例如,我可以创建一个书签,允许我使用所选文本作为参数进入网址链接到特定网站吗?
它只是我还是这个新东西?
我喜欢在我不拥有或控制的页面上运行自定义脚本.很多时候,这些页面都动态创建了我想要应用函数的内容.
这可能吗?如果是这样,我该怎么做?理想情况下,我正在寻找一些实时jQuery的live方法,除了它不是绑定一个事件,就像click它更像是在DOM中加载元素时发生的事件. load事件对某些元素有效,但我不认为...
对于此问题,假设您无法查看或更改插入DOM节点的代码.我想要一种可以在用户脚本或书签中使用的技术,可以跨多个不相关的站点使用.
编辑:我正在寻找在我的反转颜色bookmarklet上使用的东西:JavaScript:在页面的所有元素上反转颜色
我有一个书签,可以将小部件插入任何网站的页面.小部件的样式被具有以下CSS @font-face声明的特定站点破坏:
@font-face {
font-family: "helvetica";
src: url("http://cdn2.yoox.biz/Os/fonts/helveticaneueltstdmdcn.eot?iefix") format("eot"),
url("http://cdn2.yoox.biz/Os/fonts/helveticaneueltstdmdcn.woff") format("woff"),
url("http://cdn2.yoox.biz/Os/fonts/helveticaneueltstdmdcn.ttf") format("truetype"),
url("http://cdn2.yoox.biz/Os/fonts/helveticaneueltstdmdcn.svg#svgFontName") format("svg");
}
Run Code Online (Sandbox Code Playgroud)
我的书签插入使用黑体无处不在,在这一个网站上的小部件,它看起来可怕,因为浏览器是Helvetica字体映射到@font-face该名称,而不是标准黑体系统字体的声明.
问题:有没有办法覆盖/绕过这个@font-face声明或创建另一个@font-face映射到系统helvetica字体的声明?