我对JavaScript知之甚少,但尽管如此,我还是想在我的wordpress博客上拼凑一些东西.它不起作用,我不知道如何解决它,嘿,这就是StackOverflow的用途,对吧?
首先,错误消息是:
Error: element.dispatchEvent is not a function
Source File: http://.../wp-includes/js/prototype.js?ver=1.6
Line: 3936
Run Code Online (Sandbox Code Playgroud)
它发生在页面加载上.我的页面加载处理程序如此注册:
Event.observe(window, 'load', show_dates_as_local_time);
Run Code Online (Sandbox Code Playgroud)
如果我禁用其他一些插件,错误就会消失,而这(加上谷歌搜索)让我得出结论,这是原型和jQuery(其他一些插件使用)之间的冲突.
其次,我遵循wordpress推荐的使用方法wp_enqeue_script,将JavaScript中的依赖项添加到Prototype库,如下所示:
add_action( 'wp_print_scripts', 'depo_theme_add_javascript' );
function depo_theme_add_javascript() {
wp_enqueue_script('friendly_dates', 'javascript/friendly_dates.js', array('prototype'));
}
Run Code Online (Sandbox Code Playgroud)
现在我也知道jQuery和Prototype之间存在一些使用jQuery noConflicts方法解决的潜在冲突.我试过从各个地方打电话,但没有好处.我不认为这是问题,因为a)noConflict函数只与$变量有关,这似乎不是问题,而b)我希望 wordpress能为我排序,因为它可以......
最后,使用Venkman调试器我已经确定element错误消息中引用的确实是一个HTMLDocument但也缺少一个dispatchEvent.不确定这是怎么发生的,因为它是一个标准的DOM方法?
我正在使用Prototype的PeriodicalUpdater来更新带有ajax调用结果的div.据我了解,div通过设置innerHTML来更新.
div包含在<pre>标签中.在Firefox中,<pre>格式化按预期工作,但在IE中,文本都以一行结尾.
这里有一些示例代码,用于说明问题.在Firefox中,abc是在不同的行上def; 在IE中,它在同一条线上.
<html>
<head>
<title>IE preformatted text sucks</title>
</head>
<body>
<pre id="test">
a b c
d e f
</pre>
<script type="text/javascript"><!--
var textContent = document.getElementById("test").innerText;
textContent = textContent.replace("a", "<span style=\"color:red;\">a</span>");
document.getElementById("test").style.whiteSpace = "pre";
document.getElementById("test").innerHTML = textContent;
--></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
有人知道解决这个问题的方法吗?
我尝试在我的一个表单中实现reCAPTCHA,...但我使用ajax作为提交.(更具体地说是原型ajax.updater)
一旦我提交并错误检查我的表单,我尝试加载reCAPCHTA小部件(在我更新的div元素中),它基本上只调用一个javascript文件,如下所示:
<script type="text/javascript" src="http://api.recaptcha.net/challenge?k=6Le6SwUAAAAAAIWm8wCRFd8SrI-H0R1Yx4Tkw2Ks"></script>
Run Code Online (Sandbox Code Playgroud)
但是JS文件没有被读取?...我已经尝试了evalScripts的所有组合:true和evalJS:'force'等在ajax.updater .....但是我不认为我有一个非常好理解为什么js文件没有处理:(
如果有人能对这个问题有所了解,我将非常感激.
谢谢,安德鲁
我想在鼠标离开浏览器窗口时运行一些Javascript代码.我只需要支持Safari(WebKit.)
我尝试在窗口上放置一个mouseout处理程序.当鼠标离开浏览器窗口时,可以可靠地调用该处理程序.但是由于冒泡,当鼠标在文档中的元素之间移动时也会调用它.我无法弄清楚如何确定鼠标何时实际离开窗口以及何时仅在元素之间移动.
当鼠标离开窗口时,只生成一个事件,并且目标元素看起来是鼠标实际上的元素.因此,检查目标元素是窗口还是文档是不起作用的.并且将整个页面包装在一个不可见的包含div中也不起作用:如果div是不可见的,那么鼠标永远不会超过它,所以没有任何变化.
(如果我把处理程序放在document或document.body上会发生同样的事情,除了令人惊讶的document.body在鼠标进入或离开窗口的空白部分时没有鼠标悬停/鼠标输出事件,例如创建空的垂直空间通过绝对定位底部元素:0.对于该空间,文档和窗口将获得mouseover/mouseout事件,目标为<html>,但document.body不会.)
我有一些想法:
我们使用prototype.js,所以理想情况下我想用原型的Event.observe来表达解决方案,但我可以想出那部分.
谢谢你的任何建议!
我有这个内容脚本,使用XHR下载一些二进制数据,后来发送到后台脚本:
var self = this;
var xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.responseType = 'arraybuffer';
xhr.onload = function(e) {
if (this.status == 200) {
self.data = {
data: xhr.response,
contentType: xhr.getResponseHeader('Content-Type')
};
}
};
xhr.send();
... later ...
sendResponse({data: self.data});
Run Code Online (Sandbox Code Playgroud)
在后台脚本中接收到这些数据之后,我想形成另一个将这个二进制数据上传到我的服务器的XHR请求,所以我这样做:
var formData = new FormData();
var bb = new WebKitBlobBuilder();
bb.append(data.data);
formData.append("data", bb.getBlob(data.contentType));
var req = new XMLHttpRequest();
req.open("POST", serverUrl);
req.send(formData);
Run Code Online (Sandbox Code Playgroud)
问题是上传到服务器的文件只包含这个字符串:"[object Object]".我想这是因为ArrayBuffer类型在从内容进程转移到后台时以某种方式丢失了?我怎么解决这个问题?
javascript json google-chrome-extension typed-arrays xmlhttprequest-level2
我正在制作一个与谷歌搜索结果网页有关的内容脚本.
下面的行manifest.json无效.
"匹配":["https://www.google.*/*"]
manifest.json中由于以上行引起的错误是:
"content_scripts [0] .matches [0]"的值无效:主机通配符无效.
我想在各种域名上运行脚本,例如google.com,google.co.in,google.de等.我该如何做到这一点?
在我看来,Firefox应该更好地在使用时返回正确的值$(window).height().
我正在使用jQuery 1.8.2.这是特定版本中的错误吗?我测试的每个其他浏览器在计算视口高度时都会返回一个合适的值.
为了解决这个问题,我使用下面的剪辑将像素值应用于div.
$(window).bind('cwsObjectsShown', function() {
var height = $(window).height();
if (height === 0) {
height = window.innerHeight;
}
height = height - '120';
$('#game_objects').css('height', height + 'px');
});
Run Code Online (Sandbox Code Playgroud) 假设我有一个扩展程序,当你到达YouTube视频页面时加载.我注意到当使用Chrome按钮来回导航时,扩展程序很可能无法加载.
作为一个例子,我有2个文件,清单:
{
"name": "back forth",
"version": "0.1",
"manifest_version": 2,
"description": "back forth",
"permissions": ["storage", "*://www.youtube.com/watch*"],
"content_scripts": [
{
"matches": ["*://www.youtube.com/watch*"],
"js": ["contentscript.js"]
}
]
}
Run Code Online (Sandbox Code Playgroud)
和内容
alert("loaded");
Run Code Online (Sandbox Code Playgroud)
在来回导航时,警报并不总是显示出来.我怎样才能克服这个问题,以便扩展每次加载?
<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 ×7
prototypejs ×4
ajax ×2
css ×2
html ×2
jquery ×2
firefox ×1
inline ×1
jquery-1.8 ×1
json ×1
manifest ×1
margin ×1
mouseout ×1
recaptcha ×1
safari ×1
typed-arrays ×1
wordpress ×1
youtube ×1