api.execScript 与 api.sendEvent

这种知识点很简单,本来觉得没什么好讲的,但自己偏偏在此踩了几次坑,所以做个笔记。

一、api.execScript();

var options = {
    name: 'tom',
    age: 18
}
api.execScript({
    name: 'shop_win',
    frameName: theFrameName,
    script: 'getSubItemId('+JSON.stringify(options)+')'
});

    此处有 2 个坑:
    第一:传值给 frameGroup 中的某个页面时,frameName 不能填写 frameGroup 的名字,而只能填写该页面的名字;否则则这个 script 中的函数会在 frameGroup 下的所有 frame 页面执行。

    第二:script 函数可以传参,但是注意格式,当为对象时,要用 JSON.stringify 转格式。

二、api.sendEvent
    点击搜索 发送事件(将任意一个自定义事件广播出去,该事件可在任意页面通过 addEventListener 监听收到。

function searchIt(keyWord){
    var keyWord = $api.val($api.byId('search'));
    if(keyWord){
        openScenicListFrame(keyWord);
        api.sendEvent({
            name: 'clickSearch',
            extra: {
                isRefresh: 1,
                keyWord: keyWord
            }
        });
    hasHistory(keyWord);
    }
}
    在其他页面监听事件
function listenHistory(){
    api.addEventListener({
        name: 'historyItem'
    }, function(ret, err){
        var keyWord = ret.value.keyWord;
        if(keyWord){
            putDataIntoArr(keyWord);
            hasHistory();
        }
    });
}

三、addEventListener 事件监听

	方法一:document.getElementById("search").addEventListener("input",function(e){
		var keyword = e.target.value;
		console.log(keyword);
	})
	方法二:document.getElementById("search").oninput = function listenEvent(e){
		var keyword = e.target.value;
		console.log(keyword);
	})
        此外 还可以监听 onblur 等。

    当初使用时不知道怎么就踩了坑,现在感觉也没什么可写的,很基本的东西。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值