如何在页面加载时将player-id追加到输入字段中?
实现页面加载时自动追加OneSignal玩家ID到输入框
这事儿其实挺简单的,我们只需要让你现有的getOneSignalToken函数在页面加载完成后自动触发就行。结合你已经在用jQuery的情况,我给你两种靠谱的实现方式:
方法一:用原生JS的DOMContentLoaded事件
这个事件会在页面的DOM结构完全解析加载完成后触发,能确保我们的输入框已经存在,不会出现找不到元素的问题:
<input type="text" id="player-id" readonly /> <a id="get_onesignal_token" class="btn btn-primary" onClick="getOneSignalToken()">获取OneSignal玩家ID</a> <script type="text/javascript"> function getOneSignalToken() { // 获取玩家ID并追加到输入框 const playerId = android.getOneSignalRegisteredId(); $('#player-id').val($('#player-id').val() + playerId); }; // 页面加载完成后自动执行函数 document.addEventListener('DOMContentLoaded', function() { getOneSignalToken(); }); </script>
方法二:用jQuery的ready事件
既然你已经在使用jQuery操作DOM,这种方式会更贴合你的现有代码风格:
<input type="text" id="player-id" readonly /> <a id="get_onesignal_token" class="btn btn-primary" onClick="getOneSignalToken()">获取OneSignal玩家ID</a> <script type="text/javascript"> function getOneSignalToken() { const playerId = android.getOneSignalRegisteredId(); $('#player-id').val($('#player-id').val() + playerId); }; // jQuery监听页面就绪事件,自动执行函数 $(document).ready(function() { getOneSignalToken(); }); </script>
额外提醒
如果android.getOneSignalRegisteredId()需要等OneSignal SDK初始化完成才能返回有效的玩家ID,那你可能需要结合OneSignal的初始化回调来触发函数(比如OneSignal.push(function() { ... })),不过从你现有的按钮触发逻辑来看,应该页面加载时这个方法已经能拿到正确值了,上面的两种方式就足够用。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

