`
jarod2008
  • 浏览: 82771 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

innerHTML中载入js的方法

阅读更多

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 .

分享到:
评论

相关推荐

    JS 页面载入等待特效 javascript

    - 使用`document.write`方法会覆盖整个文档流的内容,建议使用其他DOM操作方法,如`innerHTML`或`textContent`。 - 为了提高用户体验,可以在页面跳转前显示一个加载动画。 #### 四、实现方式 1. **使用第三方库...

    AJAX 载入JS文件,载入CSS文件,载入JS函数,执行JS

    - **加载JS文件**:通过`loadExternalScript`函数将外部JavaScript文件添加到页面中。 - **加载CSS文件**:通过`loadExternalStyle`函数将外部CSS文件添加到页面中。 4. **执行JS代码**: - **执行内联JS代码**:...

    动态创建iframe,并动态添加js执行代码

    总结来说,动态创建iframe并动态添加js执行代码是Web开发中的重要技术,它能够帮助我们实现异步加载、跨域通信等功能,但同时也需要注意相关的安全问题。通过熟练掌握这些技术,开发者能够构建更复杂、更灵活的Web...

    我自己写的可以触发事件,载入其他页面的JS

    在JavaScript中,我们可以自定义事件处理程序来实现这样的功能,这通常涉及到`addEventListener`或`attachEvent`(对于旧版IE浏览器)这两个方法。 首先,`addEventListener`是W3C标准的方法,用于向元素添加事件...

    javascript经典特效---倒计时载入页面.rar

    接着,在JavaScript中,我们可以定义一个函数来计算剩余时间,并更新页面: ```javascript function updateCountdown() { // 获取当前时间,计算到目标时间的差距 var now = new Date(); var targetTime = new ...

    js载入flash

    // 在JavaScript中 document.getElementById("myFlashContent").callFromJS(); ``` 以上就是使用JavaScript加载和控制Flash内容的基本过程,主要借助了SWFObject这个工具。虽然现代Web倾向于避免使用Flash,但在...

    JS树 集合 目录树 二十多个

    8. 数据源:目录树的数据可能来源于服务器,需要通过Ajax请求获取,也可以直接在JavaScript中定义静态数据。 9. 插件和库:有许多现成的JS库,如jQuery Treeview、Angular UI Tree、jstree等,可以帮助快速构建目录...

    javascript+iframe 实现无刷新载入整页的代码

    成功载入的内容将通过`document.write()`方法或者在元素中设置`innerHTML`来显示。 这里还提到了`timer`对象,尽管代码片段中并没有给出`timer`对象的完整定义,但可以推测其为一个自定义的定时器函数,用于在指定...

    js基础知识及面试题.pdf

    DOM操作中,常见的方法包括获取和设置节点属性(property)和特性(attribute),例如通过document.getElementById获取指定ID的元素,通过element.innerHTML或element.value设置元素内容或表单字段值。DOM还提供了...

    JavaScript 复制功能代码 兼容多浏览器(ZeroClipboard)

    并且在写入 innerHTML 之前请确保该元素已经 appendChild 方法插入到 DOM 中。 Zero Clipboard 事件处理 Zero Clipboard 提供了一些事件,你可以自定义函数处理这些事件。Zero Clipboard 事件处理函数为 ...

    收货地址三级联动选择控件JS代码

    这可以通过`document.getElementById()`或`document.querySelector()`等方法获取元素,然后使用`innerHTML`或`appendChild()`等方法来改变或添加内容。 5. **AJAX请求**:如果数据是异步加载的,那么需要使用...

    ajax方式载入外部页面数据的层打开效果.txt

    ### AJAX方式载入外部页面数据的层打开效果详解 #### 一、背景介绍 在Web开发中,异步加载(Asynchronous JavaScript and XML,简称AJAX)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在...

    JavaScript动态修改网页元素内容的方法

    在描述的内容中,提到了一种通过JavaScript修改HTML元素内容的方法。具体地,这里使用了`document.getElementById`方法来获取页面元素。该方法接受一个参数,即目标元素的ID,然后返回一个对应的DOM元素对象。一旦...

    轻松学习javascript

    - **字符串对象**:JavaScript中的字符串是不可变的对象,提供了许多有用的方法如`length`, `toUpperCase()`, `toLowerCase()`等。 ```javascript let str = "Hello World!"; console.log(str.toUpperCase()); /...

    轻轻松松学用JavaScript 编程

    **3.4 JavaScript中的字符串和日期对象** - **3.4.1 字符串对象** ```javascript var str = "Hello World!"; console.log(str.length); // 输出字符串长度 console.log(str.toUpperCase()); // 转换为大写 ``` - ...

    第 5 章 BOM 和DOM.pptx

    * open(URL、windowName、parameterList):open 方法创建一个新的浏览器窗口,并在新窗口中载入一个指定的 URL 地址。 * close():关闭一个浏览器窗口。 * focus()、blur():让窗口获得焦点、失去焦点。 * print()...

    delphi操作webbrowser的几个技巧

    此操作类似于在JavaScript中调用同名方法,能够获取元素的属性,如源图像地址。 ### 五、获取页面中所有的frame 通过WebBrowser组件的DHTML功能,可以遍历页面中所有的框架(frame):`frames := wb.OleObject....

    标签(Tabs)实现多页面切换

    我们可以使用JavaScript的DOM操作(如`document.createElement`, `appendChild`, `innerHTML`等)来插入新加载的数据到相应位置。 **3. 创建Tab结构** 首先,我们需要在HTML中设置一个容器,比如`...

    随机显示个性签名的js代码(兼容ie,firefox)

    在JavaScript中,我们可以使用Math对象的random()方法来生成0到1之间(包括0,但不包括1)的随机浮点数。为了得到一个整数范围内的随机数,我们可以对结果进行适当的乘法和取整操作。在本例中,我们需要从预定义的...

    javascript分页效果code

    &lt;title&gt;JS静态分页程序&lt;/title&gt; &lt;/head&gt; &lt;style type="text/css"&gt; a:link,a:visited,a:hover,.current,#info{ border:1px solid #DDD; background:#F2F2F2; display:inline-block; margin:1px; text-...

Global site tag (gtag.js) - Google Analytics