小编Jos*_*Jos的帖子

android GCM获取规范id的原始id

我正在尝试向一些Android设备发送推送更新.他们中的一些人同时拥有一个新的身份证,所以我谷歌告诉我有规范的ID.从我阅读的文档中:

如果设置了message_id,请检查registration_id:

  • 如果设置了registration_id,请将原始ID替换为服务器数据库中的新值(规范ID).请注意,原始ID不是结果的一部分,因此您需要从请求中传递的registration_ids列表中获取它(使用相同的索引).

我错过了一个部分,或者如果您向Google发送超过1个注册ID,这是否含糊不清?

我的请求(替换ID为可读性):

"{"data":{"favorite":1},"registration_ids":["1","2","3","4","5","6"]}"
Run Code Online (Sandbox Code Playgroud)

Google的回复是:

{
  "multicast_id":7917175795873320166,
  "success":6,
  "failure":0,
  "canonical_ids":4,
  "results":[
    {"registration_id":"3","message_id":"m1"},
    {"message_id":"m1"},
    {"message_id":"m1"},
    {"registration_id":"3","message_id":"m1"},
    {"registration_id":"3","message_id":"m1"},
    {"registration_id":"3","message_id":"m1"}
 ]
}
Run Code Online (Sandbox Code Playgroud)

从这里,我知道id 3是正确的,但是我应该用3替换哪些原始id?为每个注册的ID发送每条消息都是浪费.我在这里阅读了一篇关于Stackoverflow(GCM和id处理)的文章,为Java服务器解决了这个问题,但我的不是(RoR).

关于如何解决这个问题的任何想法?

android push-notification google-cloud-messaging

9
推荐指数
1
解决办法
1万
查看次数

使用javascript设置<a>的onclick

我想更改div中的所有链接,以便它们不再引用页面,但在单击时运行javascript函数.为此,我写了这个函数:

function buildPageInDiv(htmlString){
    console.log(typeof htmlString);
    $div = $(htmlString).children("div#myDiv");
    $div.children("a").each(function(i, element){toJavascriptLinks(element)});
    document.getElementById("targetDiv").innerHTML = $div[0].innerHTML;
}
Run Code Online (Sandbox Code Playgroud)

调用此函数:

function toJavascriptLinks(element){
    element.href="#";
    element.onclick     = function(){console.log('Yeah!')};
    console.log(element);
}
Run Code Online (Sandbox Code Playgroud)

现在,当我运行'buildPageInDiv'时,在控制台上打印'string',所有"href"都变为"#",并且对于div中的每一个,控制台都会打印元素:

 <a href="#">
Run Code Online (Sandbox Code Playgroud)

这里没有onclick的迹象,点击链接在控制台上没有显示任何内容.

我在这里错过了什么?

编辑:

我在错误的地方寻找.问题是我在将innerHTML附加到'targetDiv'之前运行'toJavascriptLinks(element)'.这对于href属性来说没有问题,但它适用于onclick属性.解决方案只是先将它放在'targetDiv'中,然后在'targetDiv'上运行'toJavascriptLinks(element)':

function buildPageInDiv(htmlString){
    console.log(typeof htmlString);
    var content = $(htmlString).children("div#myDiv")[0].innerHTML;
    document.getElementById("targetDiv").innerHTML = content;
    $("div#targetDiv").children("a").each(function(i, element) toJavascriptLinks(element)});
}
Run Code Online (Sandbox Code Playgroud)

虽然问题不在我最初发布的代码中,但下面的综合答案使我得到了解决方案.

javascript jquery onclick javascript-events

3
推荐指数
1
解决办法
9444
查看次数