我有一个javascript文件,它包含下面的js脚本
(function() {
try {
var click = new MouseEvent('click', {bubbles: true, cancelable: true, view: window});
var field = document.querySelector('input[type="email"]');
setTimeout(function() {
field.dispatchEvent(click);
field.focus();
field.value="{0}";
}, 500);
return true;
} catch(err) {
return false;
}
})();
我使用下面的代码读取它作为字符串:
var path = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory) + "\\Resources\\script\\myjavascript.js";
var raw = File.ReadAllText(path);
var args = new object[] { "my_username" };
Console.WriteLine(raw, args);
我收到错误:抛出异常:mscorlib.dll中的'System.FormatException'
当我尝试用“my_username”替换{0}时。有谁能够帮我?
谢谢。
基于PepitoSh方法的答案如下:
var path = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory) + "\\Resources\\script\\myjavascript.js";
var raw = File.ReadAllText(path);
var script = raw.Replace("{0}", "my_username");
Console.WriteLine(script);
确实你必须逃避不属于格式化的花括号,我建议在这种特殊情况下采用另一种方法:
var path = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory) + "\\Resources\\script\\myjavascript.js";
var raw = File.ReadAllText(path);
raw = raw.Replace("{0}", "my_username");
Console.WriteLine(raw);
你必须逃脱所有其他{
和}
,只留下"{0}"
为string.format
工作。
另外,我会添加一个带有所有变量属性的js对象,并将其用作js脚本中的参数或全局对象,因此我只需要为多个脚本替换一次值。