在 Amazon Mechanical Turk 上,我在 HIT 中包含一个指向外部网页的链接,工作人员将在该网页上进行实际的 HIT。但是,我想对工人隐藏链接,直到他们接受 HIT。
这可以通过在创建 HIT 时在页面上添加一些 JavaScript 来完成吗?或者这必须通过 MTurk API 或库来完成,例如Boto
在 Amazon Mechanical Turk 上,我在 HIT 中包含一个指向外部网页的链接,工作人员将在该网页上进行实际的 HIT。但是,我想对工人隐藏链接,直到他们接受 HIT。
这可以通过在创建 HIT 时在页面上添加一些 JavaScript 来完成吗?或者这必须通过 MTurk API 或库来完成,例如Boto
打开您的外部网页时,亚马逊将在 url 查询字符串中传递变量。对于这个用例,您想查看assignmentId
. 如果工作人员assignmentId
正在ASSIGNMENT_ID_NOT_AVAILABLE
预览 HIT。(更多信息见mturk 文档。)
您可以使用以下 javascript 获取这些变量:
var assignmentId = $.getUrlVar('assignmentId');
var workerId = $.getUrlVar('workerId');
var hitId = $.getUrlVar('hitId');
if (assignmentId == "ASSIGNMENT_ID_NOT_AVAILABLE"){
// Worker is previewing the HIT
}
else {
// Worker has accepted the HIT
}
哪里$getUrlVar
是一个简单的 jquery 插件:
$.extend({
getUrlVars: function(){
// From http://code.google.com/p/js-uri/source/browse/trunk/lib/URI.js
var parser = /^(?:([^:\/?\#]+):)?(?:\/\/([^\/?\#]*))?([^?\#]*)(?:\?([^\#]*))?(?:\#(.*))?/;
var result = window.location.href.match(parser);
var scheme = result[1] || null;
var authority = result[2] || null;
var path = result[3] || null;
var query = result[4] || null;
var fragment = result[5] || null;
if (query === null || query === undefined) {
return {};
}
var vars = [], hash;
var hashes = query.split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
},
getUrlVar: function(name){
return $.getUrlVars()[name];
}
});