如何在工作人员接受 HIT 之前隐藏 HIT 中指向外部网页的链接

Sim*_*hes 1 javascript mechanicalturk amazon-web-services

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

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

Chr*_*ley 5

亚马逊将在打开您的外部网页时在 url 查询字符串中传递变量。对于此用例,您需要查看assignmentId. 如果assignmentIdASSIGNMENT_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
}
Run Code Online (Sandbox Code Playgroud)

$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];
  }
});
Run Code Online (Sandbox Code Playgroud)