我如何提供一个 URL,使用 FireShot API 来截取屏幕截图、上传到 Imgur 并返回一些输出(例如 markdown)
我正在寻找一种方法,利用 FireShot API 与 JS 来给定 URL (或者可能是一个列表)使用 FireShot API 截取屏幕截图,上传到 Imgur,然后向用户返回 URL 或类似 Markdown 的内容,以便在论坛中快速使用。
方法一:打开新窗口
我尝试在新窗口中打开URL,但发现由于跨域问题,我无法用JS控制该页面。 iFrame 也是如此。
方法 2:简单的 $.get()
一个简单的 $.get()
不会工作,因为我猜有相同的跨域问题?
http://jsfiddle.net/t6aeq/
$.get($url.val(), function(data) {
console.log(data);
});
通过 PHP“代理”
因此,我尝试创建一个简单的 PHP 脚本,获取 URL 的 HTML 并将其返回到我的 JS(使用 file_get_contents($url)
)。但是像微软这样的一些网站会检测到我正在使用一些自动化方法并给出某种错误页面。我似乎也无法找到一种使用 jQuery 查询返回 HTML 的方法 link[rel=stylesheet]、script、style
和 body
附加到 分别是 head
和 div
。我在另一个问题上发布了这一点
一个新想法:在浏览器上嵌入脚本 ?
所以我想解决这些问题是使用 iMacros 或 GreeseMonkey 或其他东西在浏览器级别将脚本插入到页面中 但是关于如何做到这一点有任何指导或提示吗?另外,如果可用的话,我更喜欢纯 JS/PHP 方法,这样用户就不会局限于使用浏览器插件/脚本(不过我现在将是唯一的用户)
我突然想到这可能行不通因为 FireShot API 密钥和 Imgur 仅限于域?有什么解决办法吗?
I am looking for a way to utilize the FireShot API with JS to given a URL (or perhaps a list) use the FireShot API to take screenshot, upload to Imgur, then return the user the URLs or perhaps something like markdown to use quickly in forums.
Method 1: Open new window
I tried opening the URL in a new window, but found that I cant control that page with JS dues to cross domain problems. The same with iFrames.
Method 2: simple $.get()
A simple $.get()
wont work because of the same cross domain issues I guess?
http://jsfiddle.net/t6aeq/
$.get($url.val(), function(data) {
console.log(data);
});
Via PHP "Proxy"
So I tried creating a simple PHP script that gets the HTML of the URL and returns it to my JS (using file_get_contents($url)
). But some sites like Microsoft will detect that I am using some automated methods and give an error page of sorts. I also cant seem to find a way to use jQuery to query that returned HTML for link[rel=stylesheet], script, style
and body
to append to the head
and a div
respectively. I posted abt that on another question
A new Idea: Embed scripts on browser level
So I thought away of getting around these is using iMacros or GreeseMonkey or something to insert scripts into pages on the browser level instead? But any guidance or tips on how can I do that? Also, I'd prefer a pure JS/PHP method if available so users are not limited to using Browser plugin/scripts (tho I will be the only user for now)
It suddenly came to my mind that this may not work because the FireShot API key and Imgur is limited to the domain? Any solutions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您也许可以使用 Greasemonkey 注入 FireShot 脚本。但是,首先使用
GM_xmlhttpRequest()
获取该页面的 API 密钥域,来自“创建 FireShot API 密钥”页面。请注意,
GM_xmlhttpRequest()
不存在与$.get()
相同的跨域问题。然而,此时您最好编写自己的 Firefox 插件。也许可以从 FireShot 的代码开始寻找想法。另请参阅Screengrab 插件 。
You might be able to inject the FireShot script using Greasemonkey. But, first use
GM_xmlhttpRequest()
to fetch an API key, for that page's domain, from the "Create FireShot API Key" page.Note that
GM_xmlhttpRequest()
does not have the same cross-domain issues that$.get()
has.However, at this point you might be better off just writing your own Firefox add-on. Maybe start with FireShot's code for ideas. Also see the Screengrab add-on.