1

在 Amazon Mechanical Turk 上,我在 HIT 中包含一个指向外部网页的链接,工作人员将在该网页上进行实际的 HIT。但是,我想对工人隐藏链接,直到他们接受 HIT。

这可以通过在创建 HIT 时在页面上添加一些 JavaScript 来完成吗?或者这必须通过 MTurk API 或库来完成,例如Boto

4

1 回答 1

5

打开您的外部网页时,亚马逊将在 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];
  }
});
于 2013-03-25T13:00:14.557 回答