小编Rob*_*b W的帖子

原型:查找具有某个类的所有元素?

使用Prototype js框架,如何找到具有某个类的所有元素?

prototypejs

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

使用jquery.js和scriptaculous.js文件?

有没有办法同时使用jquery和scriptaculous js文件?

我试图实现cakephp框架的自动完成功能,该功能需要js文件,prototype.js,scriptaculous.js,effects.js和controls.js.

我还在我的应用程序中使用JQuery函数,它需要jquery.js文件.

如果我包含jquery.js文件,则自动完成功能不起作用.但我还需要jquery.js文件来实现我的jquery函数.

那么是否有任何方法可以同时使用js文件?

jquery conflict cakephp scriptaculous prototypejs

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

使用原型观察方法禁用链接

我想创建一个这样的链接:

<a href="http://example.com">text</a>
Run Code Online (Sandbox Code Playgroud)

并替换行为,以便链接在单击时使用Ajax下载内容.

对我来说重要的是不要替换href属性(因此复制链接仍然有效).

一种解决方案是:

$('link').onclick = function() { return false; };
Run Code Online (Sandbox Code Playgroud)

但我想使用.observe方法.但这不起作用:

$('link').observe('click', function() { return false; });
Run Code Online (Sandbox Code Playgroud)

(这很合乎逻辑).

有关如何实现这一目标的任何想法?

谢谢.

javascript unobtrusive-javascript prototypejs

10
推荐指数
2
解决办法
6229
查看次数

检测实际的表格变化?

是否有现成的方法(可能在其中一个框架中)来检测表单是否与其原始值相比发生了变化

onchange事件不会发生,因为无论实际更改如何都会触发(例如,我可以勾选一个复选框,然后再关闭两个onchange事件).

最后一种方法是将每个元素的原始值存储在隐藏字段中,然后遍历每个元素.如果有更快的方法,我会很高兴听到它!

html javascript prototypejs

10
推荐指数
1
解决办法
2654
查看次数

document.createElement('script')...添加两个带有一个回调的脚本

我需要添加原型然后添加scriptaculous并在完成加载时获得回调.我目前正在加载原型:

var script = document.createElement("script");
script.src = "http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js";
script.onload = script.onreadystatechange = callback;
document.body.appendChild( script );
Run Code Online (Sandbox Code Playgroud)

我可以通过链接回调来做到这一点,但这似乎是不好的做法(当我需要加载更多脚本时,我不想要一个愚蠢的20个回调方法链).想法?

javascript dom scriptaculous prototypejs

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

使用HTTP状态代码反映Web服务请求的成功/失败?

我正在实现一个返回JSON编码的有效负载的Web服务.如果服务调用失败 - 例如,由于参数无效 - 将返回JSON编码的错误.但是,我不确定在那种情况下应该返回什么HTTP状态代码.

一方面,似乎HTTP状态代码适用于HTTP:即使返回了应用程序错误,HTTP传输本身也是成功的,建议200 OK响应.

另一方面,RESTful方法似乎暗示如果调用者试图发布到资源,并且请求的JSON参数以某种方式无效,则400 Bad Request是合适的.

我在客户端使用Prototype,它有一个很好的机制,可以根据HTTP状态代码(onSuccessonFailure)自动调度到不同的回调,所以我很想用状态代码来表示服务成功或失败,但我有兴趣听听是否有人对此事有共同惯例的意见或经验.

谢谢!

javascript ajax json http prototypejs

10
推荐指数
1
解决办法
3830
查看次数

如何在选择控件中获取所选项目的文本?

 <select name="DropList" id="serverDropList"> 
  <option selected="selected" value="2">server1:3000</option> 
  <option value="5">server3:3000</option> 
 </select> 
Run Code Online (Sandbox Code Playgroud)

我知道在原型中我可以获得价值,$('serverDropList').value但我怎么能得到"server1:3000"?

javascript prototypejs

10
推荐指数
3
解决办法
3万
查看次数

YouTube如何在对象标记中没有classid的情况下嵌入工作?

从YouTube嵌入功能获得的典型代码片段如下所示:

<object width="660" height="405">
  <param name="movie" value="http://www.youtube.com/v/NWHfY_lvKIQ?fs=1&amp;hl=en_GB&amp;border=1"></param>
  <param name="allowFullScreen" value="true"></param>
  <param name="allowscriptaccess" value="always"></param>
  <embed src="http://www.youtube.com/v/NWHfY_lvKIQ?fs=1&amp;hl=en_GB&amp;border=1"
         type="application/x-shockwave-flash" 
         allowscriptaccess="always" 
         allowfullscreen="true" 
         width="660" 
         height="405">
  </embed>
</object>
Run Code Online (Sandbox Code Playgroud)

现在,该<embed>元素有一个type属性告诉浏览器它嵌入了一个flash文件,但对于使用该<object>标记的浏览器,似乎没有可用的信息给浏览器!

为什么这里不需要classid或codebase属性?我能想到的唯一选择是:

  • IE假定在没有其他信息的情况下进行Flash嵌入
  • 或者,IE从<embed>标签中读取此信息

我找不到文档来验证任何一个选项.而且我很好奇!

编辑:在这里找到了一个很好的Flash嵌入技术比较.仍然想知道它是如何工作的......

embed youtube flash activex

10
推荐指数
1
解决办法
2829
查看次数

Javascript:REGEX将所有相对Urls更改为Absolute

我正在创建一个Node.js webscraper/proxy,但是我在解析源代码的脚本部分中找到的相对Urls时遇到了问题,我认为REGEX可以解决这个问题.虽然我不知道如何实现这一目标.

无论如何我可以解决这个问题吗?

此外,我对这样做更容易,因为我对其他代理如何解析网站感到困惑.我认为大多数只是美化的网站刮刀,可以读取网站的来源中继所有链接/表格回到代理.

javascript regex proxy node.js web-scraping

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

JavaScript注入和书签有什么区别吗?

根据维基百科关于Bookmarklets的文章(http://en.wikipedia.org/wiki/Bookmarklet),Bookmarklets的概念是:

Web浏览器将URI用于标记的href属性和书签.URI方案(例如http:,file:或ftp:)指定协议和字符串其余部分的格式.浏览器还实现了一个前缀javascript:对解析器来说就像任何其他URI一样.在内部,浏览器看到指定的协议是javascript,将字符串的其余部分视为JavaScript应用程序然后执行,并将结果字符串用作新页面.

它表示结果字符串用作新页面.那么这是否意味着浏览器的原始DOM不受该字符串的影响?但是,如果将结果字符串用作新页面,我如何在现有DOM中更改或注入新的DOM元素?因为脚本提醒Hello或注入一些新的DOM元素并没有真正返回任何内容.他们有点在现有的DOM上工作.

现在,在Internet Explorer中,除了使用Bookmarklets在页面上执行一些JavaScript之外,我还可以编写一个BHO插件并按以下方式注入:

        document = (HTMLDocument)webBrowser.Document; 
        var injectedJS = System.IO.File.ReadAllText("InjectedJS.js");
        var window = document.parentWindow;
        window.execScript("(function(){ " + injectedJS + " })()");
Run Code Online (Sandbox Code Playgroud)

同样在chrome中,我可以编写一个扩展来实现同样的目的:

var s = document.createElement('script');
s.src = chrome.extension.getURL("script.js");
s.onload = function() {
    this.parentNode.removeChild(this);
};
(document.head||document.documentElement).appendChild(s);
Run Code Online (Sandbox Code Playgroud)

这些有何不同?我所拥有的高级问题是:

  1. 这三种方法是否在不同的环境中执行JavaScript代码?
  2. 对于其中一个没有另外一个没有的限制吗?
  3. 执行结果呈现给用户或反映在浏览器中的方式有​​什么不同吗?
  4. "JavaScript注入"和"Bookmarklets"这两个术语之间是否有任何区别?虽然我认为JavaScript注入是一种效果而Bookmarklets是实现这一目标的一种方式,但BHO和Chrome扩展是另一种方式.
  5. 如果4中的假设是正确的,那么使用BHO的execScript方法或在浏览器中使用javascript:protocol 执行JavaScript的方式有什么不同吗?

javascript bho bookmarklet javascript-injection google-chrome-extension

10
推荐指数
1
解决办法
1979
查看次数