使用iFrame时未捕获的SyntaxError:意外的标记}

时间:2015-03-11 14:55:37

标签: javascript jquery html iframe

我一直在尝试使用iFrame从外部网站加载网页。页面链接正在从Web服务器动态加载。

如果没有iFrame,网站会完美加载,但是当我添加iFrame时,我会收到此错误:Uncaught SyntaxError: Unexpected token }

日志表示它位于HTML文件的第2行,即:<head>

我不确定错误或做什么。有人可以帮我解决这个问题吗?

iFrame的代码如下:<iframe id="aModule" src="#error"></iframe>

使用此函数更改src(由于永远不会触发alert()行,因此从未使用过该函数:

function setTheModule(link){
alert();
    document.getElementById("aModule").src = link;
    alert();
}
从另一个使用以下方法动态生成的列表中调用

setTheModule

function loadModules(course){
var data = {
  "fn" : "mod",
  "data": course,
  "ajax" : "true"
};
$.ajax({
  type: "GET",
  url: SERVICE_URL, //Relative or absolute path to response.php file
  data: data,
  contentType: "application/json",
  success: function(response) {

    var i, list = "";
        for (i = 0; i < response.module.length; i++) {
            list += formatModuleListItem(response.module[i]);
        }
        window.location="#modules";
        $("#mList").html(list).listview('refresh');
  }
});

}

function formatModuleListItem(item){
var fItem = "<li class='wrap'><a href='#' onclick='setTheModule('http://" + item.link +"')'>"+ item.name +"</p></li>";
return fItem;
}

我真的希望有人可以帮助我:)。

1 个答案:

答案 0 :(得分:1)

首先,您的formatModuleListItem函数中存在语法错误,您必须将其更改为以下内容:

function formatModuleListItem(item){
var fItem = "<li class='wrap'><a href='#' onclick='setTheModule(\"http://" + item.link +"\")'>"+ item.name +"</a></li>";
return fItem;
}

你有这个函数setTheModule('someVar')然后你将它封装在一个字符串中,就像这样:

onclick='setTheModule('someVar')'

单引号之间会有冲突

所以我已将功能更改为setTheModule(\"someVar\")

然后也没有<p>所以我从字符串的末尾删除了</p>并添加了</a>

希望改变它可以解决你的问题