2012-03-01 5 views
0

У меня есть страница с iframe. В iframe используется jquery.scrollTo для определения времени воспроизведения аудио и сохранения содержимого, например, текста, связанного с правой точкой в ​​аудио.с использованием jquery + <audio> w/php/mysql для воспроизведения времени воспроизведения

Каждая строка текста вытягивается из таблицы mysql. То, что я пытаюсь сделать, - позволить пользователю щелкнуть по строке в и воспроизвести звук в родительской странице в этой точке. Вот код, который захватывает время, которое существует после JQuery, который обрабатывает другие звуковые функции:

<?php 
include 'mysqlt.php'; 
$entries=mysql_query("SELECT * FROM `database`.`table`") or die(mysql_error()); 
while ($ent = mysql_fetch_object($entries)) { 
$segment = $ent->index; 
$starttime = $ent->time; 
$nextline = $ent->time2; 
$length = ($nextline - $starttime); ?> 

То же информация также дублируется на странице iframe источника наряду с отдельными линиями лирики. JQuery, который использует эту информацию следующим образом:

$("#iframe_id").contents().find("#button_in_iframe<?php echo $segment;?>").bind("click", function(){ 
     audioplayer.currentTime = <?php echo $time;?>; 
     audioplayer.play(); 
    } 
<?php } ?> 

Это вторая петлю части, вторит один раз для каждой каждой потенциальной линии в IFRAME, который может быть нажат. #button_in_iframe<?php echo $segment;?> заканчивается как-то вроде #button_in_iframe23 для 23-й линии.

У меня загружен jquery как в родительском, так и в iframe. Насколько я могу судить, синтаксис - это то, что должно быть. Если я удалю этот бит кода, все будет работать нормально. если он там, основные функции звука на обычных элементах управления, которые я установил, перестают работать. Таким образом, это не только не работает, но и приводит к тому, что все остальное, связанное с элементами управления аудио тегами, перестает работать. Я знаю, что любой небольшой ошибки в jQuery audio controls достаточно, чтобы заставить его перестать работать, но в этом случае я не уверен, где проблема.

Заранее благодарим за любую информацию, которую любой может предложить.

обновление: У меня есть так, что он больше не сбрасывает звуковой тег. Теперь это больше вопрос об элементе iframe, не вызывающем событие. Вот код, в настоящее время:

$('#iframe_id').contents().find("button.loop2").bind("click", function() { 
    alert ("test"); 
    }); 

Я не получаю никаких ошибок консоли для Карт Google, погруженных на странице в другом месте, за исключением. Когда я нажимаю <button> с классом loop2 в iframe, все из которых существуют, ничего не происходит. Это, по-видимому, корень проблемы, как это было раньше.

+0

Как выглядит выход этой части? 'currentTime = ; 'Также вы получаете консольную ошибку? – shanabus

+0

текущее время заканчивается как число, такое как 0.0, 6.7, 13.2 и т. Д. – Yhilan

+0

какая ошибка у вас получается? – shanabus

ответ

1

Я понял, как это сделать.Я установил петлю на родителе следующим образом:

play<?php echo $segment; ?> = function(){ 
     sfx.currentTime = sounds.getCueById(id).startTime; 
     sfx.play(); 
    }; 

Затем в страницу Iframe, я уже говорил каждую кнопку для вызова parent.play<?php echo $segment;?>();

Я не уверен, почему нахождение теги iframe не работал, но неважно. Это получить работу.

Спасибо, shanabus, за все предложения.

0

Будет ли это работать, чтобы использовать медиа-реплики?

Пример:

var sfx = new Audio('sfx.wav'); 
var sounds = a.addTextTrack('metadata'); 

// add sounds we care about 
sounds.addCue(new TextTrackCue('dog bark', 12.783, 13.612, '', '', '', true)); 
sounds.addCue(new TextTrackCue('kitten mew', 13.612, 15.091, '', '', '', true)); 

function playSound(id) { 
    sfx.currentTime = sounds.getCueById(id).startTime; 
    sfx.play(); 
} 

Вы можете найти лучшее определение спецификации на полпути вниз страницы здесь - http://dev.w3.org/html5/spec/Overview.html

Так что в вашем случае, может быть что-то вроде:

$("#iframe_id").contents().find("#button_in_iframe<?php echo $segment;?>").bind("click", function(){ 
     sounds.addCue(new TextTrackCue('<?php echo $segment; ?>', <?php echo $starttime; ?>, <?php echo ($starttime + $length); ?>, '', '', '', true)); 
     var id = '<?php echo $segment; ?>'; 
     sfx.currentTime = sounds.getCueById(id).startTime; 
     sfx.play(); 
    } 

Или, может быть, разделите свою логику на две петли. Один для построения реплик, затем один для создания/привязки событий кликов.

Надеюсь, это поможет!

+0

Спасибо. В конце концов, это может быть то, что я хочу сделать. Хотя для этого нужно работать, 'alert (" test ")' тоже нужно будет работать, а сейчас это не так. Похоже, теперь проблема заключается в том, что кнопка/link/etc iframe не запускает событие jquery в родительском. – Yhilan

 Смежные вопросы

  • Нет связанных вопросов^_^