阅读:5223回复:15
能否帮忙修改一下这个纵横中文网的下载脚本
脚本如下
(function() { if(unsafeWindow.user) { var wbutton = document.querySelector('.wbutton'); var a = document.createElement('a'); a.className = 'new_plview'; a.innerHTML = '下载本书'; a.addEventListener('click', function(){ var title = document.querySelector('.wright>h1>a').title GM_setClipboard(title); },0); a.href = 'http://dl.zongheng.com/book/' + document.body.getAttribute('bookId') + '.txt'; wbutton.appendChild(a); } })(); 这个脚本的作用是在书籍介绍页面加入一个和纵横按钮样式一样的下载按钮 图片:1.PNG 但是现在纵横已经改版了,他们自己加入了下载按钮 图片:2.PNG 可是问题在于,以http://book.zongheng.com/book/126081.html 这本书为例, 纵横自带的下载按钮指向的是 http://dl.zongheng.com/book/126081.zip,zip文件里面的小说也是数字命名,这样的话下载的时候改名就不方便 我希望请各位可以用脚本,将下载按钮的指向改为http://dl.zongheng.com/book/126081.txt 这样的效果,有劳各位,谢谢 |
|
1楼#
发布于:2013-06-01 13:22
用这个试试:
(function (jQuery, Domain) { var $download = jQuery(".download"); var bookId = $download.attr("bookId") || jQuery("body").attr("bookId"); var uri = Domain.dlHostName + "/book/" + bookId + ".txt"; var btn = jQuery('<a class="button" href="' + uri + ' " download="' + jQuery("body").attr("bookName") + '">下载本书</a>'); $download.replaceWith(btn); $download = null; })(unsafeWindow.jQuery, unsafeWindow.Domain); |
|
|
2楼#
发布于:2013-06-01 13:22
有效,多谢!!!
|
|
3楼#
发布于:2013-06-01 13:22
a936468:用这个试试:(function (jQuery, Domain) { var $download = jQuery(".download"); var bookId = $download.attr("bookId") || jQuery("body").attr("bookId"); var uri = Domain.dlHostName + "/book/" + bookId + ".txt"; var btn = jQuery('<a class="button" href="' + uri + ' " download="' + jQuery("body").attr("bookName") + '">下载本书</a>'); $download.replaceWith(btn); $download = null; })(unsafeWindow.jQuery, unsafeWindow.Domain);回到原帖 你好,使用过程中发现一个问题,原脚本事实上用了GM_setClipboard 这个函数,也就是 a.addEventListener('click', function(){ var title = document.querySelector('.wright>h1>a').title GM_setClipboard(title); },0); 这段代码的作用应该是使得此按钮被触发的同时还能够将小说介绍页上的小说名称复制到了剪贴板,这样下载的时候就可以直接ctrl+v重命名了,不知道能否请你再你的这个脚本中也加入此功能呢? |
|
4楼#
发布于:2013-06-01 13:22
ffpro: 在 $download = null; 后面添加以下代码: btn.click(function () { GM_setClipboard(this.download); }); |
|
|
5楼#
发布于:2013-06-01 13:22
你好,测试失败,而且即便按照
https://github.com/scriptish/scriptish/ ... tClipboard 这里的介绍,调整为 btn.click(function () { GM_setClipboard(‘hello’); }); 也不会对剪贴板造成改变 当前完整脚本如下 (function (jQuery, Domain) { var $download = jQuery(".download"); var bookId = $download.attr("bookId") || jQuery("body").attr("bookId"); var uri = Domain.dlHostName + "/book/" + bookId + ".txt"; var btn = jQuery('<a class="button" href="' + uri + ' " download="' + jQuery("body").attr("bookName") + '">下载本书</a>'); $download.replaceWith(btn); $download = null; btn.click(function () { GM_setClipboard(this.download); }); })(unsafeWindow.jQuery, unsafeWindow.Domain); 找到错误控制台,发现错误信息如下 错误: Scriptish 访问冲突:unsafeWindow 无法调用: GM_setClipboard 附上一个在起点能够正常使用的脚本 // ==UserScript== // @name 起点下载 // @namespace qidiantxt // @include http://www.qidian.com/Book/* // ==/UserScript== var link = document.location.pathname.match(/\d+/) tab = document.querySelector('.tabs ul'); newtab = document.createElement('li'); newtab.addEventListener('click', function(){ var title = document.querySelector('.title h1').textContent title = title.trim(); GM_setClipboard(title); },0); newtab.innerHTML='<a href="http://download.qidian.com/pda/' + link + '.txt">下载TXT</a>'; tab.appendChild(newtab); 以http://www.qidian.com/Book/1307256.aspx 为例,正常复制,且不会弹出此提示 |
|
6楼#
发布于:2013-06-01 13:22
ffpro:你好,测试失败,而且即便按照 GM_setClipboard 为 Scriptish 特有,Greasemonkey 没用。你这个要加 setTimeout,下面这个试试 btn.click(function () { setTimeout(function(self){ GM_setClipboard(self.download); }, 0, this); } |
|
7楼#
发布于:2013-06-01 13:22
hzzhaiqi: 我是使用的Scriptish,你这段代码不会报那个错误,可以操作剪贴板,可是效果变成了清空剪贴板(内容变为空白) 另外,括号有点不对,你应该是这个意思吧 btn.click(function () { setTimeout(function(self){ GM_setClipboard(self.download); }, 0, this); }); 是不是应该用addEventListener配合GM_setClipboard这个靠谱些?毕竟这个经过起点和纵横原来版本的测试 |
|
8楼#
发布于:2013-06-01 13:22
上面的有误,我被你误导,没仔细看。 btn.addEventListener("click", function () { setTimeout(function(self){ GM_setClipboard(self.download); }, 0, this); }); |
|
9楼#
发布于:2013-06-01 13:22
提示错误:
错误:TypeError: btn.addEventListener is not a function 当前的脚本为: // ==UserScript== // @id Zongheng_Download // @name Zongheng_download // @version 1.0 // @namespace // @author firefox // @description // @include http://book.zongheng.com/book/* // @run-at document-end // ==/UserScript== (function (jQuery, Domain) { var $download = jQuery(".download"); var bookId = $download.attr("bookId") || jQuery("body").attr("bookId"); var uri = Domain.dlHostName + "/book/" + bookId + ".txt"; var btn = jQuery('<a class="button" href="' + uri + ' " download="' + jQuery("body").attr("bookName") + '">下载本书</a>'); $download.replaceWith(btn); $download = null; btn.addEventListener("click", function () { setTimeout(function(self){ GM_setClipboard(self.download); }, 0, this); }); })(unsafeWindow.jQuery, unsafeWindow.Domain); 谢谢hzzhaiqi,能请你再看看吗? |
|
10楼#
发布于:2013-06-01 13:22
下面这样对的,我测试成功,要 Scriptish
(function (jQuery, Domain) { var $download = jQuery(".download"); var bookId = $download.attr("bookId") || jQuery("body").attr("bookId"); var uri = Domain.dlHostName + "/book/" + bookId + ".txt"; var btn = jQuery( '<a class="button" href="' + uri + ' " download="' + jQuery("body").attr("bookName") + '">下载本书</a>'); $download.replaceWith(btn); $download = null; btn.click(function () { setTimeout(function(self){ GM_setClipboard(self.download); }, 0, this); }); })(unsafeWindow.jQuery, unsafeWindow.Domain); |
|
11楼#
发布于:2013-06-01 13:22
hzzhaiqi:下面这样对的,我测试成功,要 Scriptish(function (jQuery, Domain) { var $download = jQuery(".download"); var bookId = $download.attr("bookId") || jQuery("body").attr("bookId"); var uri = Domain.dlHostName + "/book/" + bookId + ".txt"; var btn = jQuery( '<a class="button" href="' + uri + ' " download="' + jQuery("body").attr("bookName") + '">下载本书</a>'); $download.replaceWith(btn); $download = null; btn.click(function () { setTimeout(function(self){ GM_setClipboard(self.download); }, 0, this); }); })(unsafeWindow.jQuery, unsafeWindow.Domain);回到原帖 谢谢,不过我这里还是没有成功,很奇怪啊,我用的也是Scriptish,而且上面那个起点中文网的下载脚本同样用的GM_setClipboard,目前在我这里仍然工作正常。 我说一下我这里的问题,下载本书打开的不是zip是txt,这个成功了。 在点击之前,随便复制一段文字,测试脚本剪贴板操作是否成功。测试发现,函数操作是成功的,剪贴板里面之前复制的文字在点击这个“下载”按钮后不见了。 但是问题是:按ctrl+v粘贴出来的东西是空白,剪贴板相当于被清空了 这是什么问题,有没有哪位也能够将上面的脚本测试一下看看 |
|
12楼#
发布于:2013-06-01 13:22
帮不了你,我反复测试没有问题,可以粘贴标题。
|
|
13楼#
发布于:2013-06-01 13:22
用这个试试:
(function (jQuery, Domain) { var $download = jQuery(".download"); var bookId = $download.attr("bookId") || jQuery("body").attr("bookId"); var bookName = jQuery("body").attr("bookName"); var uri = Domain.dlHostName + "/book/" + bookId + ".txt"; var $btn = jQuery('<a class="button" href="' + uri + ' " download="' + bookName + '">下载本书</a>'); $download.replaceWith($btn); $download = null; $btn[0].addEventListener("click", function () { GM_setClipboard(bookName); }, false); })(unsafeWindow.jQuery, unsafeWindow.Domain); |
|
|
14楼#
发布于:2013-06-01 13:22
a936468:用这个试试:(function (jQuery, Domain) { var $download = jQuery(".download"); var bookId = $download.attr("bookId") || jQuery("body").attr("bookId"); var bookName = jQuery("body").attr("bookName"); var uri = Domain.dlHostName + "/book/" + bookId + ".txt"; var $btn = jQuery('<a class="button" href="' + uri + ' " download="' + bookName + '">下载本书</a>'); $download.replaceWith($btn); $download = null; $btn[0].addEventListener("click", function () { GM_setClipboard(bookName); }, false); })(unsafeWindow.jQuery, unsafeWindow.Domain);回到原帖 非常感谢,这个有效!!! |
|
上一页
下一页