A common AJAX technique is to return straight HTML and use the
innerHTML element attribute to insert it into the DOM. Unfortunately,
JavaScript inserted into the DOM this way (inside a <script> tag)
will not execute in all browsers.
I found this out when trying to implement a dynamically changing PlotKit
graph on my companies intranet site. It worked in Firefox (of course) and IE was coaxed into working be using the DEFER attribute
.
But the best Safari could do was leave a big blank space where my
beautiful graph should be. Even though there was probably only one
other employee that used Safari, I knew there was no way this was going
to stand. There must be a solution, right?
Some googling turned up this posting
,
where the problem was solved using a combination of cloneNode(),
innerHTML and appendChild(). Fancy. It works with Opera and IE, but not with Safari
.
Then, my eureka moment came. I replaced the <script> tag in
the RPC with a <div class=”javacript”> tag, still keeping all the
script inside the <div>. Next, I added .javascript { display: none; }
to the style sheet and did some jQuery magic:
$('#ajaxLoading').ajaxStop(function() {
$('.javascript').each(function() {
eval($(this).text());
});
});
This simple function runs every time an AJAX call is completed and
uses eval() to manually run the JavaScript. It’s ugly, it’s probably
violating some sort of standard, but guess what? It works in Safari
.
分享到:
相关推荐
- 使用`document.write`方法会覆盖整个文档流的内容,建议使用其他DOM操作方法,如`innerHTML`或`textContent`。 - 为了提高用户体验,可以在页面跳转前显示一个加载动画。 #### 四、实现方式 1. **使用第三方库...
- **加载JS文件**:通过`loadExternalScript`函数将外部JavaScript文件添加到页面中。 - **加载CSS文件**:通过`loadExternalStyle`函数将外部CSS文件添加到页面中。 4. **执行JS代码**: - **执行内联JS代码**:...
总结来说,动态创建iframe并动态添加js执行代码是Web开发中的重要技术,它能够帮助我们实现异步加载、跨域通信等功能,但同时也需要注意相关的安全问题。通过熟练掌握这些技术,开发者能够构建更复杂、更灵活的Web...
在JavaScript中,我们可以自定义事件处理程序来实现这样的功能,这通常涉及到`addEventListener`或`attachEvent`(对于旧版IE浏览器)这两个方法。 首先,`addEventListener`是W3C标准的方法,用于向元素添加事件...
接着,在JavaScript中,我们可以定义一个函数来计算剩余时间,并更新页面: ```javascript function updateCountdown() { // 获取当前时间,计算到目标时间的差距 var now = new Date(); var targetTime = new ...
// 在JavaScript中 document.getElementById("myFlashContent").callFromJS(); ``` 以上就是使用JavaScript加载和控制Flash内容的基本过程,主要借助了SWFObject这个工具。虽然现代Web倾向于避免使用Flash,但在...
8. 数据源:目录树的数据可能来源于服务器,需要通过Ajax请求获取,也可以直接在JavaScript中定义静态数据。 9. 插件和库:有许多现成的JS库,如jQuery Treeview、Angular UI Tree、jstree等,可以帮助快速构建目录...
成功载入的内容将通过`document.write()`方法或者在元素中设置`innerHTML`来显示。 这里还提到了`timer`对象,尽管代码片段中并没有给出`timer`对象的完整定义,但可以推测其为一个自定义的定时器函数,用于在指定...
DOM操作中,常见的方法包括获取和设置节点属性(property)和特性(attribute),例如通过document.getElementById获取指定ID的元素,通过element.innerHTML或element.value设置元素内容或表单字段值。DOM还提供了...
并且在写入 innerHTML 之前请确保该元素已经 appendChild 方法插入到 DOM 中。 Zero Clipboard 事件处理 Zero Clipboard 提供了一些事件,你可以自定义函数处理这些事件。Zero Clipboard 事件处理函数为 ...
这可以通过`document.getElementById()`或`document.querySelector()`等方法获取元素,然后使用`innerHTML`或`appendChild()`等方法来改变或添加内容。 5. **AJAX请求**:如果数据是异步加载的,那么需要使用...
### AJAX方式载入外部页面数据的层打开效果详解 #### 一、背景介绍 在Web开发中,异步加载(Asynchronous JavaScript and XML,简称AJAX)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在...
在描述的内容中,提到了一种通过JavaScript修改HTML元素内容的方法。具体地,这里使用了`document.getElementById`方法来获取页面元素。该方法接受一个参数,即目标元素的ID,然后返回一个对应的DOM元素对象。一旦...
- **字符串对象**:JavaScript中的字符串是不可变的对象,提供了许多有用的方法如`length`, `toUpperCase()`, `toLowerCase()`等。 ```javascript let str = "Hello World!"; console.log(str.toUpperCase()); /...
**3.4 JavaScript中的字符串和日期对象** - **3.4.1 字符串对象** ```javascript var str = "Hello World!"; console.log(str.length); // 输出字符串长度 console.log(str.toUpperCase()); // 转换为大写 ``` - ...
* open(URL、windowName、parameterList):open 方法创建一个新的浏览器窗口,并在新窗口中载入一个指定的 URL 地址。 * close():关闭一个浏览器窗口。 * focus()、blur():让窗口获得焦点、失去焦点。 * print()...
此操作类似于在JavaScript中调用同名方法,能够获取元素的属性,如源图像地址。 ### 五、获取页面中所有的frame 通过WebBrowser组件的DHTML功能,可以遍历页面中所有的框架(frame):`frames := wb.OleObject....
我们可以使用JavaScript的DOM操作(如`document.createElement`, `appendChild`, `innerHTML`等)来插入新加载的数据到相应位置。 **3. 创建Tab结构** 首先,我们需要在HTML中设置一个容器,比如`...
在JavaScript中,我们可以使用Math对象的random()方法来生成0到1之间(包括0,但不包括1)的随机浮点数。为了得到一个整数范围内的随机数,我们可以对结果进行适当的乘法和取整操作。在本例中,我们需要从预定义的...
<title>JS静态分页程序</title> </head> <style type="text/css"> a:link,a:visited,a:hover,.current,#info{ border:1px solid #DDD; background:#F2F2F2; display:inline-block; margin:1px; text-...