有什么方法可以使用Greasemonkey选择性删除网站上的脚本吗?
免责声明:我了解JS,但是对GM没有太多直接的经验(阅读:没有)。
我只需要停止加载外部脚本即可(不能使用NoScript,因为我想加载其他不那么烦人的脚本)。
我尝试这样做:
// ==UserScript==
// @name turn_shit_off
// @namespace http://www.google.com
// @include http://www.xyz.com/*
// ==/UserScript==
window.onload = function() {
var d = document; // shorthand
var scripts = d.getElementsByTagName('script');
for(var i = 0; i < scripts.count; i++) {
if(scripts[i].src.indexOf('foobar.js') != -1) {
scripts[i].src = '';
}
}
}
Run Code Online (Sandbox Code Playgroud)
但这对我不起作用。
我在iTextSharp中收到"文档未打开"错误,但仅限于生产中.代码在我的开发机器和分段上运行良好.我在舞台服务器上的Temp文件夹中设置了相同的权限.
public static byte[] ConvertHtmlToPdf(string html)
{
html = HtmlPostProcessor.Process(html);
byte[] fileData = null;
string tempPath = ConfigurationManager.AppSettings["TempDirectory"];
string tempPDFFile = Path.Combine(tempPath, Guid.NewGuid() + ".pdf");
int num = FontFactory.RegisterDirectory(@"C:\Windows\Fonts");
using (FileStream fs = new FileStream(tempPDFFile, FileMode.Create))
{
using (Document document = new Document(PageSize.LETTER, 50, 50, 50, 50))
{
document.Open();
PdfWriter.GetInstance(document, fs);
using (StringReader stringReader = new StringReader(html))
{
List<IElement> parsedList = HTMLWorker.ParseToList(stringReader, null);
foreach (IElement item in parsedList)
{
document.Add(item);
}
}
}
}
FileStream generatedPDF = File.Open(tempPDFFile, FileMode.Open);
fileData …Run Code Online (Sandbox Code Playgroud) getter将获得有关它所在的struct的状态的消息,它由struct的属性的组合定义,这些属性是有限的.
首先,这不是关于微优化,我只是认为:
StringBuilder msg = new StringBuilder();
...
msg.AppendLine("static string");
...
Run Code Online (Sandbox Code Playgroud)
看起来更清洁:
String msg = String.Empty;
...
msg = String.Concat(msg, "static string", System.Environment.NewLine)
...
Run Code Online (Sandbox Code Playgroud)
所以只是一种美学选择.
msg变量必须以任何方式初始化为空,因此额外的行不会给我带来麻烦.但是在返回字符串的字段中构造一个新的StringBuilder有多糟糕?
编辑 我只是想知道,如果把一个StringBuilder构造函数的吸气剂要开拓蠕虫的一个巨大的罐头,是荒谬的开销,一些从来没有在干将样的反模式的东西使用构造函数,等等......不知道大家是最喜欢连接非循环字符串的最佳方式.
EDIT2 getter的常用,最佳实践,性能阈值是什么,StringBuilder构造函数是否低于此值?