我一直试图<audio>通过自动化测试覆盖标签,首先确认它正在播放.
我正在使用通常的角度测试套件,业力和量角器.
"devDependencies": {
"karma": "~0.10",
"protractor": "~0.20.1",
"http-server": "^0.6.1",
"bower": "^1.3.1",
"shelljs": "^0.2.6",
"karma-junit-reporter": "^0.2.2",
"grunt": "~0.4.1",
"grunt-contrib-uglify": "~0.2.0",
"grunt-contrib-concat": "~0.3.0",
"grunt-contrib-watch": "~0.4.3"
}
Run Code Online (Sandbox Code Playgroud)
在业力方面,问题是我无法找到一种方法来添加资源以便在测试中使用,因此没有文件可以在那里播放.如果有一种方法指向要播放的文件,那么它应该不是问题,因为我可以简单地检查paused元素的属性.
在2e2方面,有一个演示应用程序可以完美地运行,测试可以正常加载它并单击其中一个按钮不会产生任何错误(如果您手动尝试它会触发声音).然而,在查看量角器API时,我找不到任何可以让我确保声音实际正在播放的内容,或者允许我像偶数一样访问该元素document并且angular在这里不可用(这在2e2测试中是有意义的)或者只是一个API检查元素属性.
beforeEach(function() {
browser.get("index.html")
});
it("Ensure the player is playing", function () {
$$("button").first().click();
// what to do?
});
Run Code Online (Sandbox Code Playgroud)
我曾经想过可能会嘲笑音频API并简单地伪造正在更新的属性但是我仍在测试我的代码,currentTime当我的最终目标是在音频精灵上测试声音时,很难准确地模拟并在预期时停止.
理想情况下,我想在单元测试中覆盖它应该是的,因此能够使用工作资源将是理想的.这样一个简单的expect(!element[0].paused).toEqual(true);意志足以让人知道它正在播放.
如何在单元测试中提供文件以用作音频源?
我使用nginx和sails有跨域配置问题.问题是,如果我通过适当的方式连接套接字,http://domain-server.com/socket.io/
则RESTful请求将失败.如果RESTful工作,套接字将不会.
建立
客户 http://domain.com
服务器 http://server-domain.com
客户端是使用"sails.io.js": "0.10.3"和配置的角度应用程序io.sails.url = 'http://domain-server.com';.
Server是一个具有RESTful请求和套接字功能的sails应用程序.
Sails CORS配置
module.exports.cors = {
allRoutes: true,
origin: 'http://domain.com',
credentials: true,
methods: 'GET, POST, PUT, DELETE, OPTIONS, HEAD',
headers: 'content-type,Access-Control-Allow-Origin'
};
Run Code Online (Sandbox Code Playgroud)
Sails套接字配置
module.exports.socket {
onConnect: function() {},
onDisconnect: function() {},
authorization: false,
'backwardsCompatibilityFor0.9SocketClients': false,
grant3rdPartyCookie: true,
origins: 'http://domain.com'
};
Run Code Online (Sandbox Code Playgroud)
nginx配置
注释掉是我在nginx配置中摆弄的但没有取得多大成功(也尝试了客户端地址而不是*).
server {
listen 80;
server_name domain-server.com;
#add_header Access-Control-Allow-Origin *;
location / {
# add_header Access-Control-Allow-Origin *;
proxy_pass http://localhost:1337;
proxy_http_version 1.1;
proxy_set_header Upgrade …Run Code Online (Sandbox Code Playgroud) 你如何在javascript中有效地将int转换为枚举?
说我有这个枚举
enuTable = // Table enum
{
enuUnknown: 0,
enuPerson: 1,
enuItem: 2,
enuSalary: 3,
enuTax: 4,
enuZip: 5,
enuAddress: 6,
enuLocation: 7,
enuTasks: 8,
};
Run Code Online (Sandbox Code Playgroud)
在部分代码中,我从AJAX调用中获取一个返回值,该调用是与上述表之一相对应的数字.
我可以编写一个转换值的开关,但是有一种更有效(简洁)的方式将int转换为枚举吗?一个原因是,我不想经常更改开关,以防我更改枚举.我想我可以使用带有枚举名称的数组并构造一个标识符来索引枚举,但是,每次枚举更改时我都需要更改数组.我想我正在寻找的是一种透明的方法,它不需要事先知道枚举.
在我的测试用例中,我正在尝试这样的事情:
element = angular.element('<div></div>')
element.trigger('mouseenter');
Run Code Online (Sandbox Code Playgroud)
但是,有错误说“未定义不是函数”。我认为这是因为我没有使用 jquery。我也试过这个:
goog.events.dispatchEvent(element[0], 'mouseenter');
Run Code Online (Sandbox Code Playgroud)
但是,它说“断言失败:不能将 goog.events.dispatchEvent 与非 goog.events.Listenable 实例一起使用”
有什么解决办法吗?
我看过很多关于这个问题的问题,但没有人回答我的问题.我正在为一个网站制作一个侧边栏,我正在尝试在与侧边栏宽度相同的框中创建链接,只有一点填充,可能是10-15px,每个之间有一点点空间.也许3px.但我似乎无法得到文字装饰:没有; 无论我尝试过什么,都要工作.
这是迄今为止我获得的最成功的代码:
HTML
<div id= "sidebar">
<h3>Navigation Links</h3>
<div id= "sidelinks">
<ul>
<li><a href= "#">Home</a></li>
<li><a href= "#">Biography</a></li>
</ul>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS
#sidebar {
background: #464646;
width: 250px;
height: 1000px;
margin-left: 50px;
border-radius: 15px;
}
h3 {
font-family: 'Coda', cursive;
color: white;
background: #6B6B6B;
font-size: 24px;
text-align: center;
padding: 15px 0 8px 0;
border-top-left-radius: 15px;
border-top-right-radius: 15px;
}
#sidelinks {
font-family: 'Armata', sans-serif;
font-size: 25px;
text-decoration: none;
color: white;
background-color: #4D4D4D;
padding: 10px;
position: relative;
}
Run Code Online (Sandbox Code Playgroud) 我是CSS的新手.我有一个像这样的表
<table id="datatable">
<tbody>
<tr>
<td><strong>2013</strong></td>
<td> </td>
<td><strong>144</strong></td>
</tr>
<tr>
<td><strong>2012</strong></td>
<td> </td>
<td><strong>159</strong></td>
</tr>
<tr>
<td><strong>2011</strong></td>
<td> </td>
<td><strong>147</strong></td>
</tr>
<tr>
<td><strong>2010</strong></td>
<td> </td>
<td><strong>137</strong></td>
</tr>
<tr>
<td><strong>2009</strong></td>
<td> </td>
<td><strong>303</strong></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
而且我需要设置这个表的样式,如下所示.我尝试了一些东西,但我不能那样的样式

我刚试过
.datatable td {
border-bottom: 1px solid black;
}
Run Code Online (Sandbox Code Playgroud)
根据下图,我需要第一个td边框为绿色,其他为黑色.任何人都可以帮忙吗?在此先感谢您的帮助.
我需要能够验证在node其中产生并使用存储一些密码Symfony2与sha512编码.
我可以检索hash并且salt正常但是在使用时crypto我无法使用与数据库中存储的盐匹配的salt来生成哈希.
Symfony security.yml
security:
encoders:
"FOS\UserBundle\Model\UserInterface": sha512
Run Code Online (Sandbox Code Playgroud)
哈希存储在DB中
6zxwRZc4EPXKxQes9avs0ZyCRFkC4dtpXrT983ML8VLvv9WhRnAi282bwuFuj3LHPQBGmqD1BfCLDUXGdHIjZQ==
Run Code Online (Sandbox Code Playgroud)
盐存储在DB中
qu7rjvaietws8kg4cgsggksookwsws8
Run Code Online (Sandbox Code Playgroud)
由于我正在使用的节点端有一个salt,crypto.pbkdf2Sync配置中没有设置迭代,看起来Symfony的默认值是1000.但是默认长度是40但是存储的散列长度是128,所以使用128作为长度(试了40但没有成功).
我也尝试过Symfony 2使用的5000次迭代MessageDigestPasswordEncoder,并将原始密码与salt合并,因为symfony raw_password{salt}没有成功.
如果我使用pbkdf2Sync生成长度的密钥40(根据symfony默认值)然后使用它来更新哈希生成,我也可以获得足够长的base64crypto.createHash
var hash = user.password;
var salt = user.salt;
console.log(hash);
console.log(crypto.pbkdf2Sync("password", salt, 1000, 128 >> 1, "sha512").toString("base64"));
Run Code Online (Sandbox Code Playgroud)
生成的哈希大小和格式与存储在数据库中的大小匹配,但它们与我的问题值不匹配.我还尝试了动态生成的多个迭代值,没有任何运气.
产量
6zxwRZc4EPXKxQes9avs0ZyCRFkC4dtpXrT983ML8VLvv9WhRnAi282bwuFuj3LHPQBGmqD1BfCLDUXGdHIjZQ==
5QPz3zXwhak/bTD2S9IFEEFmiJ8q/fqIlSF6cWin7dqmh92EFNXjw/FLtQw7NX3LVehwcXKjfypo2EhJxiLouQ==
w9+8xjklvGq9CuiqY8tEoxEetLV9lbhLJ/KaFQEooUFJrGT9/EdsVd/sSRJ+DXjsH4RQeaqsmftmuzLPgVv5MA==
Run Code Online (Sandbox Code Playgroud)
如何生成散列,使其与Symfony 2使用的方式相匹配?
我需要从<a>动态构建的特定类中删除3个类.唯一不变的是标题.如何通过标题定位/查找元素?我一直在谷歌上搜索,但没有出现任何我想要的东西.如果使用CSS可以做到这一点很好但我希望javascript/jQuery的答案对我有用.
标签看起来像:
<a href="javascript:%20openLookup%28%27%2F_ui%2Fcommon%2Fdata%2FLookupPage%3Flkfm%3Dj_id0%253Aj_id2%253AtheForm%26lknm%3Dj_id0%253Aj_id2%253AtheForm%253Aj_id77%26lktp%3D%27%20%2B%20getElementByIdCS%28%27j_id0%3Aj_id2%3AtheForm%3Aj_id77_lktp%27%29.value%2C670%2C%271%27%2C%27%26lksrch%3D%27%20%2B%20escapeUTF%28getElementByIdCS%28%27j_id0%3Aj_id2%3AtheForm%3Aj_id77%27%29.value.substring%280%2C%2080%29%29%29" class="col-md-12 col-sm-12 col-xs-12 noPadding" id="j_id0:j_id2:theForm:j_id77_lkwgt" onclick="setLastMousePosition(event)" title="Client Lookup (New Window)">
<img src="/s.gif" alt="Client Lookup (New Window)" class="lookupIcon" onblur="this.className = 'lookupIcon';" onfocus="this.className = 'lookupIconOn';" onmouseout="this.className = 'lookupIcon';this.className = 'lookupIcon';" onmouseover="this.className = 'lookupIconOn';this.className = 'lookupIconOn';" title="Client Lookup (New Window)">
</a>
Run Code Online (Sandbox Code Playgroud) css ×3
javascript ×3
angularjs ×2
html ×2
hash ×1
jasmine ×1
jquery ×1
karma-runner ×1
nginx ×1
node.js ×1
pbkdf2 ×1
protractor ×1
sails.io.js ×1
sails.js ×1
symfony ×1
upstart ×1