Articles of dom

在node.js中生成javascript用于客户端的方法

我最近观看了Dav Glass在YUI和Node上的谈话,服务器端的小部件渲染让我特别感兴趣。 我想做类似的事情,同时仍然可以在客户端使用JavaScript的小部件。 我面对的问题是如何在页面加载后运行与窗口小部件相关的代码(添加点击事件等)。 一种方法可能是为每个小部件编写一个init函数,然后将其转换为一个string,并将其与所呈现的html一起放入脚本标记中,但我不认为这是一个非常漂亮的解决scheme。 任何人都可以想到更好的解决scheme?

如何保存DOM插入?

我想知道如何保存我的HTML页面的以前的DOM插入。 码: //With jQuery $('#container').append('Hi!'); 而窗口将显示Hi! ,但我想知道如何保存插入,当我刷新页面,显示我2 Hi! ,这是之前插入jQuery Mark的结果。 如何将JavaScript中执行代码后的HTML结构中的更改保存(如下面的示例)?

加载HTML对象客户端(表单)

我必须编写一个单一的页面应用程序,将在整个应用程序使用相同的3种forms,只是每个人的行动将改变。 标签/input将是相同的,等等… 我想让我的应用程序快速响应,因此,我想知道,如果每次需要加载时通过Javascriptforms地生成FORM,而不是从服务器上以HTML格式下载,这是一个好主意。 那么,有没有什么好的做法,通过Javascript生成DOM objets? 第一次加载应用程序时,有没有办法下载每个FORM的HTML代码? 或者我必须每次通过与DOM的DOM对象构build它们? 这里有什么好的做法? 我使用node.js,knockout.js,jquery。 谢谢 !

如果子句在recursion函数中

我试图build立一个遍历Dom树的函数,当且仅当节点名称不等于script和style 。 这里是function: public static void PostOrderTR(Node node) throws XPathExpressionException, MalformedURLException, SAXNotRecognizedException, SAXNotSupportedException, ParserConfigurationException, IOException, SAXException { if (node == null || node.getNodeName() == null) { return; } if(!"script".equals(node.getNodeName())||!"style".equals(node.getLocalName())|| !"style".equals(node.getNodeName())) { //do something PostOrderTR(node.getFirstChild()); } if(!"script".equals(node.getNodeName())||!"style".equals(node.getLocalName())|| !"style".equals(node.getNodeName())) PostOrderTR(node.getNextSibling()); } 但在实践中,结果完全相反。 它遍历所有的节点,包括script和style 。 我已经尝试用||replace&& 没有什么改变。

在JS节点中操纵模板的button属性

我有一个由包含三个button的DIV组成的HTML模板。 <template ID="template3buttons"> <div ID="container3buttons" class="boxes"> <div ID= "sunShadeUp" class="boxes"> <input type="button" id="SunshadeButtonUp" class="SunshadeSmallButton" onclick="GenericAction('ENO_ShutterStop($all)', 'all')" value=""/> </div> <div ID= "sunShadeStop" class="boxes"> <input type="button" id="SunshadeButtonStop" class="SunshadeSmallButton" onclick="GenericAction('ENO_ShutterStop($all)', 'all')" value=""/> </div> <div ID= "sunShadeDown" class="boxes"> <input type="button" id="SunshadeButtonDown" class="SunshadeSmallButton" onclick="GenericAction('ENO_ShutterStop($all)', 'all')" value=""/> </div> </div> </template> 我使用JS来生成模板的许多副本,最终将其插入到相应的DIV中。 function create3Button(cellButtonId) //create boxes with 3 buttons each { var […]

将脚本元素添加到DOM而不执行它

我正在创build一个读取HTML文件的节点脚本,将其作为DOM文档进行处理,然后将其序列化回另一个文件。 我现在正在使用jsdom 。 我需要做的一个操作是添加一个<script>元素,其JavaScript代码将对DOM进一步操作。 问题是,只要我将脚本添加到jsdom节点,jsdom就会运行它,并且第二个操作阶段立即完成,因此输出HTML是错误的。 我以为这只会发生在PhantomJS,而不是jsdom,但我错了。 我没有使用jsdom的特殊约束,我可以切换到PhantomJS或其他任何东西,但是我需要生成一个HTML文件,并且在执行我的Node程序时不需要运行脚本就添加了脚本。 有没有办法做到这一点?

在node.js中使用XPath

我正在node.js中构build一个小文档parsing器。 为了testing,我有一个原始的HTML文件 ,通常在应用程序执行时从真实网站下载。 我想从Console.WriteLine的每个部分提取符合我的约束的第一个代码示例 – 它必须用C#编写。 要做到这一点,我有这样的XPath: //*[@id='System_Console_WriteLine_System_String_System_Object_System_Object_System_Object_']/parent::div/following-sibling::div/pre[position()>1]/code[contains(@class,'lang-csharp')] 如果我在线testingXPath ,我会得到预期的结果,这是在这个Gist 。 在我的node.js应用程序中,我使用xmldom和xpath来尝试parsing完全相同的信息: var exampleLookup = `//*[@id='System_Console_WriteLine_System_String_System_Object_System_Object_System_Object_']/parent::div/following-sibling::div/pre[position()>1]/code[contains(@class,'lang-csharp')]`; var doc = new dom().parseFromString(rawHtmlString, 'text/html'); var sampleNodes = xpath.select(exampleLookup,doc); 但是,这不会返回任何内容。 这里可能会发生什么?

Node.js:JSDOM删除内联事件

在原始html上使用JSDOM模块时,它将删除任何内联事件的痕迹。 我不确定为什么会这么随便这么做。 有没有人find一种方法来解决这个问题,或者是我做错了什么? 例: var jsdom = require('jsdom'); jsdom.defaultDocumentFeatures = { FetchExternalResources : false, ProcessExternalResources : false, MutationEvents : false, QuerySelector : false }; var body="<a onclick='foo();'>FOO</a>"; var window = jsdom.jsdom(body).createWindow(); console.log(window.document.innerHTML); 这个代码会输出 <a>FOO</a>

使用PhantomJs,Nodejs和MySQL

有没有办法使用PhantomJS刮取数据,然后用nodejs XPath和DOMparsing结果,然后保存到MySQL? 我已经安装了PhantomJS核心和PhantomJS Node模块,但是试图从shell级别运行Node来执行scraper,然后设置cronjobs来按计划运行它们。

如何用node.js中的XPath修改xmldom中的DOM?

我正在尝试改变node.js中的DOM结构。 我可以加载XMLstring,并用xmldom( https://github.com/jindw/xmldom )中的本地方法修改它,但是当我加载XPath( https://github.com/goto100/xpath )并尝试通过该select器改变DOM,它不起作用。 还有另一种方法可以做到这一点吗? 要求是: 必须在浏览器和服务器端都工作(纯js?) 不能使用eval或其他代码执行的东西(为了安全) 示例代码来显示我今天如何尝试,也许我只是想念一些基本的东西? var xpath = require('xpath'), dom = require('xmldom').DOMParser; var xml = '<!DOCTYPE html><html><head><title>blah</title></head><body id="test">blubb</body></html>'; var doc = new dom().parseFromString(xml); var bodyByXpath = xpath.select('//*[@id = "test"]', doc); var bodyById = doc.getElementById('test'); var h1 = doc.createElement('h1').appendChild(doc.createTextNode('title')); // Works fine 🙂 bodyById.appendChild(h1); // Does not work 🙁 bodyByXpath.appendChild(h1); […]