在Amazon Mechanical Turk上,我在HIT中包含一个链接到外部网页,工作人员将在该网页上执行实际的HIT。但是,我想隐藏工人的链接,直到他们接受HIT。
这可以通过在创建HIT时在页面上添加一些JavaScript来完成吗?或者这必须通过MTurk API或Boto
答案 0 :(得分:4)
Amazon会在打开外部网页时传递url查询字符串中的变量。对于此用例,您需要查看assignmentId
。如果assignmentId
为ASSIGNMENT_ID_NOT_AVAILABLE
,则工作人员正在预览HIT。 (mturk docs中的更多信息。)
您可以使用以下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];
}
});