有人在这里问了同样的问题How do you get the value from a TVML textField?但没有解释完整的答案,我的评论被编辑了,建议我问一个全新的问题。这是...
任何人都可以帮助理解如何最好地从 TVML 获取对 textField
节点及其键盘值的引用吗?现在,我在 Presenter.js
中使用下面的代码,一旦用户单击模板中显示的 Done
按钮,即可访问 textField
表单和键盘,但仍然得到
ITML : undefined is not an object (evaluating 'textField.getFeature') - .../js/Presenter.js
当我使用getFeature("Keyboard")
时:
load: function(event) {
var self = this,
ele = event.target,
templateURL = ele.getAttribute("template"),
presentation = ele.getAttribute("presentation"),
videoURL = ele.getAttribute("videoURL");
if (templateURL && (event.type == "select")) {
var formTemplate = ele.parentNode.parentNode; // that should give me <formTemplate> element
var children = formTemplate.childNodes;
var textField = children[1]; // which is the second element in <formTemplate><banner></banner><textField></textField>...
var keyboard = textField.getFeature("Keyboard"); // this raises the ITML Error...
...........................
更新:
我通过查看 accessing elements by traversing XML DOM 找到了解决方案:
var formTemplate = ele.parentNode.parentNode; // your formTemplate button
var children = formTemplate.childNodes;
var textField = children.item(1); // replace "1" with the index of "textField" element in your template
var keyboard = textField.getFeature("Keyboard"); // get the textField's Keyboard element
var userValue = keyboard.text; // the value entered by the user on the Apple TV keyboard
最佳答案
从文档的根目录开始怎么样?使用 getElementsByTagName
、getElementByTagName
或 getElementById
访问 textField
。
var doc = navigationDocument.documents[navigationDocument.documents.length-1];
var textField = doc.getElementByTagName("textField")
var value = textField.getFeature("Keyboard").text;
关于javascript - 如何在TVJS中获取TVML textField的节点和键盘引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32808960/