【问题标题】:How to hide the link to an external web page in a HIT before workers accept the HIT如何在员工接受 HIT 之前在 HIT 中隐藏指向外部网页的链接
【发布时间】:2013-03-25 21:00:14
【问题描述】:

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

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

【问题讨论】:

  • “隐藏”是什么意思?如果您的意思是不要在呈现的网页中显示它,那么克里斯的答案将起作用。但是如果你的意思是你不希望 URL 显示在 HTML 源代码中,你将不得不在服务器端添加一些东西。

标签: javascript amazon-web-services mechanicalturk


【解决方案1】:

打开您的外部网页时,亚马逊将在 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];
  }
});

【讨论】:

  • 很好的解决方案。想知道为什么他们不会有一个 api 调用来让你知道工人何时接受了命中,但这是一个巧妙的解决方法。你知道是否有一个 api 调用来查看正在工作的命中吗?谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多